#include <AbsCor.h>
Public Member Functions | |
AbsCor (const std::string &name, ISvcLocator *pSvcLocator) | |
AbsCor (const std::string &name, ISvcLocator *pSvcLocator) | |
double | corEnergyPi0 (double eg, double theid) |
double | corEnergyPi0 (double eg, double theid) |
StatusCode | execute () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | finalize () |
StatusCode | initialize () |
StatusCode | initialize () |
Private Attributes | |
int | dodatacor |
NTuple::Item< double > | m_ct |
NTuple::Item< double > | m_ct |
NTuple::Item< double > | m_e5 |
NTuple::Item< double > | m_e5 |
NTuple::Item< double > | m_ec |
NTuple::Item< double > | m_ec |
NTuple::Item< double > | m_ef |
NTuple::Item< double > | m_ef |
NTuple::Tuple * | m_tuple1 |
NTuple::Tuple * | m_tuple1 |
int | mccor |
bool | ntOut |
int | usetof |
|
00050 : 00051 Algorithm(name, pSvcLocator) { 00052 00053 //Declare the properties 00054 ntOut = true; 00055 declareProperty("NTupleOut",ntOut); 00056 declareProperty("McCor", mccor=0); 00057 declareProperty("UseTof", usetof=1); 00058 declareProperty("DoDataCor", dodatacor = 1); 00059 }
|
|
|
|
|
|
|
|
|
|
00148 { 00149 MsgStream log(msgSvc(), name()); 00150 log << MSG::INFO << "in execute()" << endreq; 00151 // SmartDataPtr<Event::EventH> eventHeader(eventSvc(),"/Event"); 00152 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00153 int runNo=eventHeader->runNumber(); 00154 00155 SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent); 00156 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(), EventModel::EvtRec::EvtRecTrackCol); 00157 if(evtRecEvent->totalTracks()>evtRecTrkCol->size())return SUCCESS; 00158 if(evtRecEvent->totalTracks()>50)return SUCCESS; 00159 00160 for(int i = 0; i< evtRecEvent->totalTracks(); i++) { 00161 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i; 00162 if(!(*itTrk)->isEmcShowerValid())continue; 00163 RecEmcShower *emcTrk = (*itTrk)->emcShower(); 00164 // if(emcTrk->energy()<0.0005)continue; 00165 if(emcTrk->e5x5()<0.015)continue; 00166 // if(emcTrk->getTime()<10||emcTrk->getTime()>30)continue; 00167 /* 00168 if(emcTrk->e5x5()<0.02){ 00169 emcTrk->setEnergy(emcTrk->e5x5()*1.1); 00170 continue; 00171 } 00172 */ 00173 /* 00174 int intid = emcTrk->cellId(); 00175 Identifier id=Identifier(intid); 00176 int getthetaid = EmcID::theta_module(id); 00177 int getmodule = EmcID::barrel_ec(id); 00178 if(getmodule==1)getthetaid=getthetaid+6; 00179 if(getmodule==2)getthetaid=55-getthetaid; 00180 */ 00181 double etof=0; 00182 00183 if(usetof==1 && (*itTrk)->isTofTrackValid()){ 00184 SmartRefVector<RecTofTrack> recTofTrackVec=(*itTrk)->tofTrack(); 00185 if(!recTofTrackVec.empty())etof=recTofTrackVec[0]->energy(); 00186 if(etof>100.)etof=0; 00187 } 00188 double energyC=emcTrk->energy()+etof; 00189 /* 00190 if(energyC<=0||energyC>4.99)continue; 00191 double cor = 1.0; 00192 if(runNo>0)cor = dt->Eval(energyC); 00193 if(cor<0.001)continue; 00194 // cout<<cor<<endl; 00195 double energyCC= energyC/cor; 00196 emcTrk->setEnergy(energyCC); 00197 */ 00198 00199 double lnE = std::log(energyC); 00200 double lnEcor=1.0; 00201 if(runNo>0 && dodatacor==1) lnEcor = ai[0]+ai[1]*lnE+ai[2]*lnE*lnE+ai[3]*lnE*lnE*lnE; 00202 if(lnEcor<0.5)continue; 00203 // cout<<lnEcor<<" "<<etof<<endl; 00204 double energyCC= energyC/lnEcor; 00205 // cout<<"Trk Level Corr. and Orig. "<<energyCC<<" "<<emcTrk->energy()<<endl; 00206 emcTrk->setEnergy(energyCC); 00207 } 00208 //==============Modify Dst=============================================================== 00209 SmartDataPtr<RecEmcShowerCol> recEmcShowerCol(eventSvc(), EventModel::Recon::RecEmcShowerCol); 00210 if(!recEmcShowerCol){ 00211 return( StatusCode::SUCCESS); 00212 } 00213 SmartDataPtr<DstEmcShowerCol> dstEmcShowerCol(eventSvc(), EventModel::Dst::DstEmcShowerCol); 00214 if(!dstEmcShowerCol){ 00215 return( StatusCode::SUCCESS); 00216 } 00217 00218 // cout<<"Rec and Dst Size "<<recEmcShowerCol->size()<<" "<<dstEmcShowerCol->size()<<endl; 00219 if(recEmcShowerCol->size()!=dstEmcShowerCol->size())return SUCCESS; 00220 for(int i=0;i<recEmcShowerCol->size();i++){ 00221 RecEmcShowerCol::iterator iter_rec = recEmcShowerCol->begin()+i; 00222 DstEmcShowerCol::iterator iter_dst = dstEmcShowerCol->begin()+i; 00223 // cout<<"Rec and Dst energy "<<(*iter_rec)->energy()<<" "<<(*iter_dst)->energy()<<endl; 00224 (*iter_dst)->setEnergy((*iter_rec)->energy()); 00225 // cout<<"Rec == Dst? "<<(*iter_rec)->energy()<<" "<<(*iter_dst)->energy()<<endl; 00226 } 00227 return( StatusCode::SUCCESS); 00228 }
|
|
|
|
00231 { 00232 00233 MsgStream log(msgSvc(), name()); 00234 log << MSG::INFO << "in finalize()" << endmsg; 00235 return StatusCode::SUCCESS; 00236 }
|
|
|
|
00064 { 00065 MsgStream log(msgSvc(), name()); 00066 log << MSG::INFO << "in initialize()" << endmsg; 00067 StatusCode status; 00068 if(ntOut == true){ 00069 NTuplePtr nt1(ntupleSvc(), "FILE1/ec"); 00070 if ( nt1 ) m_tuple1 = nt1; 00071 else { 00072 m_tuple1 = ntupleSvc()->book ("FILE1/ec", CLID_ColumnWiseTuple, "ks N-Tuple example"); 00073 if ( m_tuple1 ) { 00074 status = m_tuple1->addItem ("ef", m_ef); 00075 status = m_tuple1->addItem ("e5", m_e5); 00076 status = m_tuple1->addItem ("ec", m_ec); 00077 status = m_tuple1->addItem ("ct", m_ct); 00078 } 00079 else { 00080 log << MSG::ERROR << " Cannot book N-tuple:" << long(m_tuple1) << endmsg; 00081 return StatusCode::FAILURE; 00082 } 00083 } 00084 } 00085 00086 string DataPathevse; 00087 DataPathevse = getenv("ABSCORROOT"); 00088 DataPathevse += "/share/barmccorevse10bin.txt"; 00089 ifstream inpi0; 00090 inpi0.open(DataPathevse.c_str(),ios::in); 00091 00092 double epoint[11],peak[11],peakerr[11]; 00093 for(Int_t i=0;i<11;i++){ 00094 inpi0>>epoint[i]; 00095 inpi0>>peak[i]; 00096 inpi0>>peakerr[i]; 00097 } 00098 for(Int_t i=0;i<11;i++){ 00099 dt->SetPoint(i, epoint[i],peak[i]); 00100 dt->SetPointError(i,0,peakerr[i]); 00101 } 00102 00103 string DataPathcbeam; 00104 DataPathcbeam = getenv("ABSCORROOT"); 00105 DataPathcbeam += "/share/cbeam.txt"; 00106 ifstream incbeam; 00107 incbeam.open(DataPathcbeam.c_str(),ios::in); 00108 for(int i=0; i<56; i++){ 00109 double tid,peak,peake,sig,sige; 00110 incbeam>>tid; 00111 incbeam>>peak; 00112 incbeam>>peake; 00113 incbeam>>sig; 00114 incbeam>>sige; 00115 cbeam[i]=1.0/peak; 00116 } 00117 00118 string DataPathc3p; 00119 DataPathc3p = getenv("ABSCORROOT"); 00120 00121 string DataPathc3ptof; 00122 DataPathc3ptof = getenv("ABSCORROOT"); 00123 00124 cout<<"mccor = "<<mccor<<endl; 00125 00126 DataPathc3p += "/share/c3p.txt"; 00127 DataPathc3ptof += "/share/c3ptof.txt"; 00128 00129 ifstream inc3p; 00130 if(usetof==0)inc3p.open(DataPathc3p.c_str(),ios::in); 00131 if(usetof==1)inc3p.open(DataPathc3ptof.c_str(),ios::in); 00132 for(int i=0; i<4; i++){ 00133 double am,ame; 00134 inc3p>>am; 00135 inc3p>>ame; 00136 ai[i]=am; 00137 } 00138 00139 00140 00141 00142 log << MSG::INFO << "successfully return from initialize()" <<endmsg; 00143 return StatusCode::SUCCESS; 00144 00145 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|