00001 #include "RootEventData/TEvtRecObject.h" 00002 #include "TCollection.h" // Declares TIter 00003 00004 ClassImp(TEvtRecObject) 00005 00006 // Allocate the TObjArray just once 00007 00008 TEvtRecEvent* TEvtRecObject::s_staticEvtRecEvent = 0; 00009 TObjArray* TEvtRecObject::s_staticEvtRecTrackCol = 0; 00010 TEvtRecPrimaryVertex *TEvtRecObject::s_staticEvtRecPrimaryVertex = 0; 00011 TObjArray *TEvtRecObject::s_staticEvtRecVeeVertexCol = 0; 00012 TObjArray *TEvtRecObject::s_staticEvtRecPi0Col = 0; 00013 TObjArray *TEvtRecObject::s_staticEvtRecEtaToGGCol = 0; 00014 TObjArray *TEvtRecObject::s_staticEvtRecDTagCol = 0; 00015 00016 TEvtRecObject::TEvtRecObject() 00017 { 00018 if ( ! s_staticEvtRecEvent ) { 00019 s_staticEvtRecEvent = new TEvtRecEvent; 00020 } 00021 m_evtRecEvent = s_staticEvtRecEvent; 00022 00023 if ( !s_staticEvtRecTrackCol) { 00024 s_staticEvtRecTrackCol = new TObjArray(); 00025 } 00026 m_evtRecTrackCol = s_staticEvtRecTrackCol; 00027 00028 if ( ! s_staticEvtRecPrimaryVertex ) { 00029 s_staticEvtRecPrimaryVertex = new TEvtRecPrimaryVertex(); 00030 } 00031 m_evtRecPrimaryVertex = s_staticEvtRecPrimaryVertex; 00032 00033 if ( ! s_staticEvtRecVeeVertexCol ) { 00034 s_staticEvtRecVeeVertexCol = new TObjArray(); 00035 } 00036 m_evtRecVeeVertexCol = s_staticEvtRecVeeVertexCol; 00037 00038 if ( ! s_staticEvtRecPi0Col ) { 00039 s_staticEvtRecPi0Col = new TObjArray(); 00040 } 00041 m_evtRecPi0Col = s_staticEvtRecPi0Col; 00042 00043 if ( ! s_staticEvtRecEtaToGGCol ) { 00044 s_staticEvtRecEtaToGGCol = new TObjArray(); 00045 } 00046 m_evtRecEtaToGGCol = s_staticEvtRecEtaToGGCol; 00047 00048 if ( ! s_staticEvtRecDTagCol ) { 00049 s_staticEvtRecDTagCol = new TObjArray(); 00050 } 00051 m_evtRecDTagCol = s_staticEvtRecDTagCol; 00052 00053 00054 00055 Clear(); 00056 } 00057 00058 TEvtRecObject::~TEvtRecObject() { 00059 00060 if ( m_evtRecEvent == s_staticEvtRecEvent ) s_staticEvtRecEvent = 0; 00061 delete m_evtRecEvent; 00062 m_evtRecEvent = 0; 00063 00064 if ( m_evtRecTrackCol == s_staticEvtRecTrackCol ) s_staticEvtRecTrackCol = 0; 00065 m_evtRecTrackCol->Delete(); 00066 delete m_evtRecTrackCol; 00067 m_evtRecTrackCol = 0; 00068 00069 if ( m_evtRecPrimaryVertex == s_staticEvtRecPrimaryVertex ) s_staticEvtRecPrimaryVertex = 0; 00070 delete m_evtRecPrimaryVertex; 00071 m_evtRecPrimaryVertex = 0; 00072 00073 if ( m_evtRecVeeVertexCol == s_staticEvtRecVeeVertexCol ) s_staticEvtRecVeeVertexCol = 0; 00074 m_evtRecVeeVertexCol->Delete(); 00075 delete m_evtRecVeeVertexCol; 00076 m_evtRecVeeVertexCol = 0; 00077 00078 if ( m_evtRecPi0Col == s_staticEvtRecPi0Col ) s_staticEvtRecPi0Col = 0; 00079 m_evtRecPi0Col->Delete(); 00080 delete m_evtRecPi0Col; 00081 m_evtRecPi0Col = 0; 00082 00083 if ( m_evtRecEtaToGGCol == s_staticEvtRecEtaToGGCol ) s_staticEvtRecEtaToGGCol = 0; 00084 m_evtRecEtaToGGCol->Delete(); 00085 delete m_evtRecEtaToGGCol; 00086 m_evtRecEtaToGGCol = 0; 00087 00088 if ( m_evtRecDTagCol == s_staticEvtRecDTagCol ) s_staticEvtRecDTagCol = 0; 00089 m_evtRecDTagCol->Delete(); 00090 delete m_evtRecDTagCol; 00091 m_evtRecDTagCol = 0; 00092 00093 } 00094 00095 void TEvtRecObject::initialize() { 00096 } 00097 00098 void TEvtRecObject::Clear(Option_t* option) { 00099 } 00100 00101 void TEvtRecObject::Print(Option_t* option) const { 00102 TObject::Print(option); 00103 } 00104 00105 void TEvtRecObject::setEvtRecEvent(TEvtRecEvent* evtRecEvent) { 00106 m_evtRecEvent->setTotalTracks ( evtRecEvent->totalTracks() ); 00107 m_evtRecEvent->setTotalCharged( evtRecEvent->totalCharged() ); 00108 m_evtRecEvent->setTotalNeutral( evtRecEvent->totalNeutral() ); 00109 m_evtRecEvent->setNumberOfVee ( evtRecEvent->numberOfVee() ); 00110 m_evtRecEvent->setNumberOfPi0 ( evtRecEvent->numberOfPi0() ); 00111 m_evtRecEvent->setNumberOfEtaToGG ( evtRecEvent->numberOfEtaToGG() ); 00112 m_evtRecEvent->setNumberOfDTag( evtRecEvent->numberOfDTag() ); 00113 } 00114 00115 void TEvtRecObject::addEvtRecTrack(TEvtRecTrack* track) { 00116 m_evtRecTrackCol->Add(track); 00117 } 00118 00119 const TEvtRecTrack* TEvtRecObject::getEvtRecTrack(Int_t i) const { 00120 if ( i >= m_evtRecTrackCol->GetEntries() || i < 0 ) 00121 return 0; 00122 return (TEvtRecTrack*) m_evtRecTrackCol->At(i); 00123 } 00124 00125 void TEvtRecObject::setEvtRecPrimaryVertex(TEvtRecPrimaryVertex* evtRecPrimaryVertex) { 00126 m_evtRecPrimaryVertex->setIsValid (evtRecPrimaryVertex->isValid() ); 00127 m_evtRecPrimaryVertex->setNTracks (evtRecPrimaryVertex->nTracks() ); 00128 m_evtRecPrimaryVertex->setTrackIdList (evtRecPrimaryVertex->trackIdList() ); 00129 m_evtRecPrimaryVertex->setChi2 (evtRecPrimaryVertex->chi2() ); 00130 m_evtRecPrimaryVertex->setNdof (evtRecPrimaryVertex->ndof() ); 00131 m_evtRecPrimaryVertex->setFitMethod (evtRecPrimaryVertex->fitMethod() ); 00132 Double_t vtx[3]; 00133 for (Int_t i = 0; i < 3; i++) { 00134 vtx[i] = evtRecPrimaryVertex->vertex(i); 00135 } 00136 Double_t Evtx[6]; 00137 for (Int_t i = 0; i < 6; i++) { 00138 Evtx[i] = evtRecPrimaryVertex->errorVertex(i); 00139 } 00140 m_evtRecPrimaryVertex->setVertex (vtx); 00141 m_evtRecPrimaryVertex->setErrorVertex (Evtx); 00142 } 00143 00144 void TEvtRecObject::addEvtRecVeeVertex(TEvtRecVeeVertex* veeVertex) { 00145 m_evtRecVeeVertexCol->Add(veeVertex); 00146 } 00147 00148 00149 00150 void TEvtRecObject::addEvtRecPi0(TEvtRecPi0* pi0) { 00151 m_evtRecPi0Col->Add(pi0); 00152 } 00153 00154 00155 void TEvtRecObject::addEvtRecEtaToGG(TEvtRecEtaToGG* eta) { 00156 m_evtRecEtaToGGCol->Add(eta); 00157 } 00158 00159 void TEvtRecObject::addEvtRecDTag(TEvtRecDTag* dtag) { 00160 m_evtRecDTagCol->Add(dtag); 00161 } 00162 00163 const TEvtRecVeeVertex* TEvtRecObject::getEvtRecVeeVertex(Int_t i) const { 00164 if ( i >= m_evtRecVeeVertexCol->GetEntries() || i < 0 ) 00165 return 0; 00166 return (TEvtRecVeeVertex*) m_evtRecVeeVertexCol->At(i); 00167 } 00168 00169 00170 const TEvtRecPi0* TEvtRecObject::getEvtRecPi0(Int_t i) const { 00171 if ( i >= m_evtRecPi0Col->GetEntries() || i < 0 ) 00172 return 0; 00173 return (TEvtRecPi0*) m_evtRecPi0Col->At(i); 00174 } 00175 00176 00177 const TEvtRecEtaToGG* TEvtRecObject::getEvtRecEtaToGG(Int_t i) const { 00178 if ( i >= m_evtRecEtaToGGCol->GetEntries() || i < 0 ) 00179 return 0; 00180 return (TEvtRecEtaToGG*) m_evtRecEtaToGGCol->At(i); 00181 } 00182 00183 00184 const TEvtRecDTag* TEvtRecObject::getEvtRecDTag(Int_t i) const { 00185 if ( i >= m_evtRecDTagCol->GetEntries() || i < 0 ) 00186 return 0; 00187 return (TEvtRecDTag*) m_evtRecDTagCol->At(i); 00188 }