DigammaPreSelect Class Reference

#include <DigammaPreSelect.h>

List of all members.

Public Member Functions

 DigammaPreSelect (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()
int selectedType () const
int selectedTrkID1 () const
int selectedTrkID2 () const

Private Member Functions

RecEmcShowermatched (int TrkID) const
double Angle2ClosestShower (int ShowerID)

Private Attributes

double m_vr0cut
double m_vz0cut
double m_lowEnergyShowerCut
double m_highEnergyShowerCut
double m_matchThetaCut
double m_matchPhiCut
double m_highMomentumCut
double m_EoPMaxCut
double m_EoPMinCut
double m_minAngShEnergyCut
double m_minAngCut
double m_acolliCut
double m_eNormCut
double m_pNormCut
int m_BarrelOrEndcap
bool m_output
double m_oneProngMomentumCut
int m_selectedType
int m_selectedTrkID1
int m_selectedTrkID2
long int m_events
long int m_rejected
int m_oneProngsSelected
int m_twoProngsMatchedSelected
int m_twoProngsOneMatchedSelected
NTuple::Tuple * m_tuple1
NTuple::Item< double > m_trk1_p
NTuple::Item< double > m_trk1_theta
NTuple::Item< double > m_trk1_phi
NTuple::Item< double > m_sh1_ene
NTuple::Item< double > m_sh1_theta
NTuple::Item< double > m_sh1_phi
NTuple::Item< double > m_trk2_p
NTuple::Item< double > m_trk2_theta
NTuple::Item< double > m_trk2_phi
NTuple::Item< double > m_sh2_ene
NTuple::Item< double > m_sh2_theta
NTuple::Item< double > m_sh2_phi
NTuple::Item< double > m_di_the
NTuple::Item< double > m_di_phi
NTuple::Item< double > m_etot
NTuple::Item< double > m_pNorm
NTuple::Item< double > m_eNorm
NTuple::Item< double > m_acolli
NTuple::Item< double > m_mdc_hit
NTuple::Tuple * m_tuple2
NTuple::Item< double > m_sh_ene
NTuple::Item< double > m_sh_theta
NTuple::Item< double > m_sh_phi


Detailed Description

Definition at line 11 of file DigammaPreSelect.h.


Constructor & Destructor Documentation

DigammaPreSelect::DigammaPreSelect ( const std::string name,
ISvcLocator *  pSvcLocator 
)

Definition at line 41 of file DigammaPreSelect.cxx.

References m_acolliCut, m_BarrelOrEndcap, m_eNormCut, m_EoPMaxCut, m_EoPMinCut, m_highEnergyShowerCut, m_highMomentumCut, m_lowEnergyShowerCut, m_matchPhiCut, m_matchThetaCut, m_minAngCut, m_minAngShEnergyCut, m_oneProngMomentumCut, m_output, m_pNormCut, m_vr0cut, and m_vz0cut.

00041                                                                                   :
00042   Algorithm(name, pSvcLocator) {
00043 
00044     //Declare the properties  
00045 
00046     declareProperty ("Vr0cut", m_vr0cut=1.0);   // suggest cut: |z0|<5cm && r0<1cm
00047     declareProperty ("Vz0cut", m_vz0cut=5.0);
00048 
00049     declareProperty ("lowEnergyShowerCut",  m_lowEnergyShowerCut=0.1);
00050     declareProperty ("highEnergyShowerCut",  m_highEnergyShowerCut=0.5);
00051     declareProperty ("matchThetaCut",  m_matchThetaCut = 0.2);
00052     declareProperty ("matchPhiCut", m_matchPhiCut = 0.2);
00053 
00054     declareProperty ("highMomentumCut", m_highMomentumCut = 0.5);
00055     declareProperty ("EoPMaxCut", m_EoPMaxCut =1.3);
00056     declareProperty ("EoPMinCut", m_EoPMinCut = 0.6);
00057     declareProperty ("minAngShEnergyCut", m_minAngShEnergyCut = 0.2);
00058     declareProperty ("minAngCut", m_minAngCut = 0.3);
00059     declareProperty ("acolliCut", m_acolliCut = 0.03);
00060     declareProperty ("eNormCut", m_eNormCut = 0.5);
00061     declareProperty ("pNormCut", m_pNormCut = 0.5);
00062     declareProperty ("BarrelOrEndcap", m_BarrelOrEndcap = 1);
00063     declareProperty ("Output", m_output = false);
00064     declareProperty ("oneProngMomentumCut", m_oneProngMomentumCut =1.2);
00065 
00066   }


Member Function Documentation

double DigammaPreSelect::Angle2ClosestShower ( int  ShowerID  )  [private]

StatusCode DigammaPreSelect::execute (  ) 

Definition at line 136 of file DigammaPreSelect.cxx.

References EmcID::barrel_ec(), Bes_Common::DEBUG, EventModel::EvtRec::EvtRecEvent, EventModel::EvtRec::EvtRecTrackCol, genRecEmupikp::i, Bes_Common::INFO, m_BarrelOrEndcap, m_di_phi, m_di_the, m_etot, m_events, m_output, m_sh1_ene, m_sh1_phi, m_sh1_theta, m_sh2_ene, m_sh2_phi, m_sh2_theta, m_tuple1, msgSvc(), EmcID::phi_module(), PI, selected, and EmcID::theta_module().

00136                                      {
00137 
00138   setFilterPassed(false);
00139 
00140   MsgStream log(msgSvc(), name());
00141   log << MSG::INFO << "in execute()" << endreq;
00142 
00143   m_events++;
00144 
00145   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00146   if(!eventHeader)
00147   {
00148     cout<<"  eventHeader  "<<endl;
00149     return StatusCode::FAILURE;
00150   }
00151 
00152   int run=eventHeader->runNumber();
00153   int event=eventHeader->eventNumber();
00154   if(event%1000==0)   cout<<"  run,event:  "<<run<<","<<event<<endl;
00155 
00156   SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
00157   if(!evtRecEvent ) {
00158     cout<<"  evtRecEvent  "<<endl;
00159     return StatusCode::FAILURE;
00160   }
00161 
00162   log << MSG::DEBUG <<"ncharg, nneu, tottks = " 
00163     << evtRecEvent->totalCharged() << " , "
00164     << evtRecEvent->totalNeutral() << " , "
00165     << evtRecEvent->totalTracks() <<endreq;
00166   SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(),  EventModel::EvtRec::EvtRecTrackCol);
00167   if(!evtRecTrkCol){
00168     cout<<"  evtRecTrkCol  "<<endl;
00169     return StatusCode::FAILURE;
00170   }
00171 
00172   Vint iGood;
00173   iGood.clear();
00174 
00175   double ene5x5,theta,phi,eseed;
00176   double showerX,showerY,showerZ;
00177   long int thetaIndex,phiIndex;
00178 
00179   RecEmcID showerId;
00180   unsigned int npart;
00181 
00182   Vint ipip, ipim;
00183   ipip.clear();
00184   ipim.clear();
00185   Vp4 ppip, ppim;
00186   ppip.clear();
00187   ppim.clear();
00188 
00189   vector<RecEmcShower* >  GoodShowers;
00190   GoodShowers.clear();
00191   double etot=0;
00192   for(int i = 0; i< evtRecEvent->totalTracks(); i++) {
00193     if(i>=evtRecTrkCol->size()) break;
00194     EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i;
00195     if((*itTrk)->isEmcShowerValid()) {
00196       RecEmcShower *theShower = (*itTrk)->emcShower();
00197       etot+=theShower->e5x5();
00198       showerId = theShower->getShowerId();
00199       npart = EmcID::barrel_ec(showerId);
00200       ene5x5=theShower->e5x5(); 
00201       thetaIndex=EmcID::theta_module(showerId);
00202       phiIndex=EmcID::phi_module(showerId);  
00203       if (ene5x5>0.4&&ene5x5<4&&npart==1&&(m_BarrelOrEndcap==1)){
00204         GoodShowers.push_back(theShower); 
00205         iGood.push_back((*itTrk)->trackId());
00206       }
00207       else if (ene5x5>0.4&&ene5x5<4&&(npart==2||npart==0)&&(m_BarrelOrEndcap==2)){
00208         GoodShowers.push_back(theShower); 
00209         iGood.push_back((*itTrk)->trackId());
00210       }
00211       else if (ene5x5>0.4&&ene5x5<4&&(m_BarrelOrEndcap==0)){
00212         GoodShowers.push_back(theShower); 
00213         iGood.push_back((*itTrk)->trackId());
00214       }
00215     }
00216     // good photon cut will be set here
00217   }
00218   // Finish Good Photon Selection
00219   //
00220 
00221   double  MaxE(0), MaxPhi, MaxThe;
00222   int MaxId;
00223   double  SecE(0), SecPhi, SecThe;
00224   for(int i=0; i<GoodShowers.size(); i++) {
00225     RecEmcShower *theShower = GoodShowers[i];
00226     double eraw = theShower->energy();
00227     if(eraw> MaxE) {
00228       MaxId =i;
00229       MaxE =eraw;
00230       MaxPhi = theShower->phi();
00231       MaxThe = theShower->theta();
00232     }
00233   }
00234   for(int i=0; i<GoodShowers.size(); i++) {
00235     RecEmcShower *theShower = GoodShowers[i];
00236     double eraw = theShower->energy();
00237     if(i!=MaxId&&eraw>SecE) {
00238       SecE =eraw;
00239       SecPhi = theShower->phi();
00240       SecThe = theShower->theta();
00241     }
00242   }
00243 
00244   double dphi = (fabs(MaxPhi-SecPhi)-PI)*180./PI;
00245   double dthe = (fabs(MaxThe+SecThe)-PI)*180./PI;
00246   if(GoodShowers.size()>=2&&SecE>1.0&&dphi>-4&&dphi<2&&abs(dthe)<3&&etot>2.7) {
00247     setFilterPassed(true);
00248     selected++;
00249   }
00250 
00251   if(m_output) {
00252     m_etot=etot;
00253     m_sh1_ene = MaxE;
00254     m_sh1_theta = MaxThe;
00255     m_sh1_phi = MaxPhi;
00256     m_sh2_ene = SecE;
00257     m_sh2_theta = SecThe;
00258     m_sh2_phi = SecPhi;
00259     m_di_phi = dphi;
00260     m_di_the = dthe;
00261     m_tuple1->write();
00262   }
00263 
00264   return StatusCode::SUCCESS;
00265 
00266 }

StatusCode DigammaPreSelect::finalize (  ) 

Definition at line 269 of file DigammaPreSelect.cxx.

References Bes_Common::INFO, m_events, msgSvc(), and selected.

00269                                       {
00270 
00271   MsgStream log(msgSvc(), name());
00272   log << MSG::INFO << "in finalize()" << endmsg;
00273   cout<<"total events: "<<m_events<<endl;
00274   cout<<"selected digamma: "<<selected<<endl;
00275 
00276   return StatusCode::SUCCESS;
00277 }

StatusCode DigammaPreSelect::initialize (  ) 

Definition at line 69 of file DigammaPreSelect.cxx.

References calibUtil::ERROR, Bes_Common::INFO, m_acolli, m_di_phi, m_di_the, m_etot, m_events, m_mdc_hit, m_oneProngsSelected, m_output, m_rejected, m_selectedTrkID1, m_selectedTrkID2, m_sh1_ene, m_sh1_phi, m_sh1_theta, m_sh2_ene, m_sh2_phi, m_sh2_theta, m_sh_ene, m_sh_phi, m_sh_theta, m_tuple1, m_tuple2, m_twoProngsMatchedSelected, m_twoProngsOneMatchedSelected, msgSvc(), and ntupleSvc().

00069                                        {
00070   MsgStream log(msgSvc(), name());
00071 
00072   log << MSG::INFO << "in initialize()" << endmsg;
00073 
00074   if(m_output) {
00075     StatusCode status;
00076     NTuplePtr nt1(ntupleSvc(), "FILE1/bhabha");
00077     if ( nt1 ) m_tuple1 = nt1;
00078     else {
00079       m_tuple1 = ntupleSvc()->book ("FILE1/bhabha", CLID_ColumnWiseTuple, "N-Tuple example");
00080       if ( m_tuple1 )    {
00081         status = m_tuple1->addItem ("sh1_ene",m_sh1_ene);
00082         status = m_tuple1->addItem ("sh1_theta", m_sh1_theta);
00083         status = m_tuple1->addItem ("sh1_phi", m_sh1_phi);
00084         status = m_tuple1->addItem ("sh2_ene",m_sh2_ene);
00085         status = m_tuple1->addItem ("sh2_theta", m_sh2_theta);
00086         status = m_tuple1->addItem ("sh2_phi", m_sh2_phi);
00087         status = m_tuple1->addItem ("di_phi", m_di_phi);
00088         status = m_tuple1->addItem ("di_the", m_di_the);
00089         status = m_tuple1->addItem ("acolli", m_acolli);
00090         status = m_tuple1->addItem ("mdc_hit", m_mdc_hit);
00091         status = m_tuple1->addItem ("etot", m_etot);
00092 
00093       }
00094       else    { 
00095         log << MSG::ERROR << "    Cannot book N-tuple:" << long(m_tuple1) << endmsg;
00096         return StatusCode::FAILURE;
00097       }
00098     }
00099 
00100 
00101     NTuplePtr nt2(ntupleSvc(), "FILE1/bha1");
00102     if ( nt2 ) m_tuple2 = nt2;
00103     else {
00104       m_tuple2 = ntupleSvc()->book ("FILE1/bha1", CLID_ColumnWiseTuple, "N-Tuple example");
00105       if ( m_tuple2 )    {
00106         status = m_tuple2->addItem ("sh_ene",m_sh_ene);
00107         status = m_tuple2->addItem ("sh_theta", m_sh_theta);
00108         status = m_tuple2->addItem ("sh_phi", m_sh_phi);
00109       }
00110       else    { 
00111         log << MSG::ERROR << "    Cannot book N-tuple:" << long(m_tuple2) << endmsg;
00112         return StatusCode::FAILURE;
00113       }
00114     }
00115   }
00116 
00117 
00118   //
00119   //--------end of book--------
00120   //
00121 
00122   m_rejected=0;
00123   m_events=0;
00124   m_oneProngsSelected=0;
00125   m_twoProngsMatchedSelected=0;
00126   m_twoProngsOneMatchedSelected=0;
00127   m_selectedTrkID1=999;
00128   m_selectedTrkID2=999;
00129 
00130   log << MSG::INFO << "successfully return from initialize()" <<endmsg;
00131   return StatusCode::SUCCESS;
00132 
00133 }

RecEmcShower* DigammaPreSelect::matched ( int  TrkID  )  const [private]

int DigammaPreSelect::selectedTrkID1 (  )  const [inline]

Definition at line 23 of file DigammaPreSelect.h.

References m_selectedTrkID1.

00024     {
00025       return m_selectedTrkID1;
00026     }

int DigammaPreSelect::selectedTrkID2 (  )  const [inline]

Definition at line 27 of file DigammaPreSelect.h.

References m_selectedTrkID2.

00028     {
00029       return m_selectedTrkID2;
00030     }

int DigammaPreSelect::selectedType (  )  const [inline]

Definition at line 19 of file DigammaPreSelect.h.

References m_selectedType.

00020     {
00021       return m_selectedType; 
00022     }


Member Data Documentation

NTuple::Item<double> DigammaPreSelect::m_acolli [private]

Definition at line 95 of file DigammaPreSelect.h.

Referenced by initialize().

double DigammaPreSelect::m_acolliCut [private]

Definition at line 50 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

int DigammaPreSelect::m_BarrelOrEndcap [private]

Definition at line 53 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect(), and execute().

NTuple::Item<double> DigammaPreSelect::m_di_phi [private]

Definition at line 90 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_di_the [private]

Definition at line 89 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_eNorm [private]

Definition at line 94 of file DigammaPreSelect.h.

double DigammaPreSelect::m_eNormCut [private]

Definition at line 51 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_EoPMaxCut [private]

Definition at line 46 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_EoPMinCut [private]

Definition at line 47 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

NTuple::Item<double> DigammaPreSelect::m_etot [private]

Definition at line 92 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

long int DigammaPreSelect::m_events [private]

number of events passed

Definition at line 63 of file DigammaPreSelect.h.

Referenced by execute(), finalize(), and initialize().

double DigammaPreSelect::m_highEnergyShowerCut [private]

Definition at line 41 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_highMomentumCut [private]

Definition at line 45 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_lowEnergyShowerCut [private]

Definition at line 40 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_matchPhiCut [private]

Definition at line 43 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_matchThetaCut [private]

Definition at line 42 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

NTuple::Item<double> DigammaPreSelect::m_mdc_hit [private]

Definition at line 96 of file DigammaPreSelect.h.

Referenced by initialize().

double DigammaPreSelect::m_minAngCut [private]

Definition at line 49 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_minAngShEnergyCut [private]

Definition at line 48 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_oneProngMomentumCut [private]

Definition at line 56 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

int DigammaPreSelect::m_oneProngsSelected [private]

Definition at line 68 of file DigammaPreSelect.h.

Referenced by initialize().

bool DigammaPreSelect::m_output [private]

Definition at line 54 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect(), execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_pNorm [private]

Definition at line 93 of file DigammaPreSelect.h.

double DigammaPreSelect::m_pNormCut [private]

Definition at line 52 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

long int DigammaPreSelect::m_rejected [private]

number of events rejected

Definition at line 66 of file DigammaPreSelect.h.

Referenced by initialize().

int DigammaPreSelect::m_selectedTrkID1 [private]

Definition at line 60 of file DigammaPreSelect.h.

Referenced by initialize(), and selectedTrkID1().

int DigammaPreSelect::m_selectedTrkID2 [private]

Definition at line 61 of file DigammaPreSelect.h.

Referenced by initialize(), and selectedTrkID2().

int DigammaPreSelect::m_selectedType [private]

selected event type

Definition at line 59 of file DigammaPreSelect.h.

Referenced by selectedType().

NTuple::Item<double> DigammaPreSelect::m_sh1_ene [private]

Definition at line 79 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_sh1_phi [private]

Definition at line 81 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_sh1_theta [private]

Definition at line 80 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_sh2_ene [private]

Definition at line 86 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_sh2_phi [private]

Definition at line 88 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_sh2_theta [private]

Definition at line 87 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Item<double> DigammaPreSelect::m_sh_ene [private]

Definition at line 98 of file DigammaPreSelect.h.

Referenced by initialize().

NTuple::Item<double> DigammaPreSelect::m_sh_phi [private]

Definition at line 100 of file DigammaPreSelect.h.

Referenced by initialize().

NTuple::Item<double> DigammaPreSelect::m_sh_theta [private]

Definition at line 99 of file DigammaPreSelect.h.

Referenced by initialize().

NTuple::Item<double> DigammaPreSelect::m_trk1_p [private]

Definition at line 76 of file DigammaPreSelect.h.

NTuple::Item<double> DigammaPreSelect::m_trk1_phi [private]

Definition at line 78 of file DigammaPreSelect.h.

NTuple::Item<double> DigammaPreSelect::m_trk1_theta [private]

Definition at line 77 of file DigammaPreSelect.h.

NTuple::Item<double> DigammaPreSelect::m_trk2_p [private]

Definition at line 83 of file DigammaPreSelect.h.

NTuple::Item<double> DigammaPreSelect::m_trk2_phi [private]

Definition at line 85 of file DigammaPreSelect.h.

NTuple::Item<double> DigammaPreSelect::m_trk2_theta [private]

Definition at line 84 of file DigammaPreSelect.h.

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

Definition at line 75 of file DigammaPreSelect.h.

Referenced by execute(), and initialize().

NTuple::Tuple* DigammaPreSelect::m_tuple2 [private]

Definition at line 97 of file DigammaPreSelect.h.

Referenced by initialize().

int DigammaPreSelect::m_twoProngsMatchedSelected [private]

Definition at line 69 of file DigammaPreSelect.h.

Referenced by initialize().

int DigammaPreSelect::m_twoProngsOneMatchedSelected [private]

Definition at line 70 of file DigammaPreSelect.h.

Referenced by initialize().

double DigammaPreSelect::m_vr0cut [private]

Definition at line 37 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().

double DigammaPreSelect::m_vz0cut [private]

Definition at line 38 of file DigammaPreSelect.h.

Referenced by DigammaPreSelect().


Generated on Tue Nov 29 23:18:17 2016 for BOSS_7.0.2 by  doxygen 1.4.7