Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

AbsCor Class Reference

#include <AbsCor.h>

List of all members.

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


Constructor & Destructor Documentation

AbsCor::AbsCor const std::string &  name,
ISvcLocator *  pSvcLocator
 

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 }

AbsCor::AbsCor const std::string &  name,
ISvcLocator *  pSvcLocator
 


Member Function Documentation

double AbsCor::corEnergyPi0 double  eg,
double  theid
 

double AbsCor::corEnergyPi0 double  eg,
double  theid
 

StatusCode AbsCor::execute  ) 
 

StatusCode AbsCor::execute  ) 
 

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 }

StatusCode AbsCor::finalize  ) 
 

StatusCode AbsCor::finalize  ) 
 

00231                             {
00232 
00233   MsgStream log(msgSvc(), name());
00234   log << MSG::INFO << "in finalize()" << endmsg;
00235   return StatusCode::SUCCESS;
00236 }

StatusCode AbsCor::initialize  ) 
 

StatusCode AbsCor::initialize  ) 
 

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 }


Member Data Documentation

int AbsCor::dodatacor [private]
 

NTuple::Item<double> AbsCor::m_ct [private]
 

NTuple::Item<double> AbsCor::m_ct [private]
 

NTuple::Item<double> AbsCor::m_e5 [private]
 

NTuple::Item<double> AbsCor::m_e5 [private]
 

NTuple::Item<double> AbsCor::m_ec [private]
 

NTuple::Item<double> AbsCor::m_ec [private]
 

NTuple::Item<double> AbsCor::m_ef [private]
 

NTuple::Item<double> AbsCor::m_ef [private]
 

NTuple::Tuple* AbsCor::m_tuple1 [private]
 

NTuple::Tuple* AbsCor::m_tuple1 [private]
 

int AbsCor::mccor [private]
 

bool AbsCor::ntOut [private]
 

int AbsCor::usetof [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 15:51:46 2011 for BOSS6.5.5 by  doxygen 1.3.9.1