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

ChargedDReconstruction Class Reference

#include <ChargedDReconstruction.h>

List of all members.

Public Member Functions

 ChargedDReconstruction (const std::string &name, ISvcLocator *pSvcLocator)
 ChargedDReconstruction (const std::string &name, ISvcLocator *pSvcLocator)
StatusCode execute ()
StatusCode execute ()
StatusCode finalize ()
StatusCode finalize ()
vector< string > getlist (string &filename)
vector< string > getlist (string &filename)
StatusCode initialize ()
StatusCode initialize ()
void pidtag (vector< int >, vector< int >, CDChargedKaonList &, CDChargedPionList &, EvtRecDTag *)
void pidtag (vector< int >, vector< int >, CDChargedKaonList &, CDChargedPionList &, EvtRecDTag *)
void saveDpInfo (CDDecayList::iterator, double, int, EvtRecDTag *)
void saveDpInfo (CDDecayList::iterator, double, int, EvtRecDTag *)
void savetrack (vector< int >, vector< int >, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecDTag *)
void savetrack (vector< int >, vector< int >, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecTrackIterator, EvtRecDTag *)

Private Member Functions

StatusCode registerEvtRecDTagCol (EvtRecDTagCol *dtagCol, MsgStream &log)
StatusCode registerEvtRecDTagCol (EvtRecDTagCol *dtagCol, MsgStream &log)

Private Attributes

vector< string > chanlist
vector< string > chanlist
double m_beamE
bool m_debug
string m_decaylist
int m_ievt
int m_irun
int m_nChrg
int m_nKaon
int m_nKs
int m_nNeu
int m_nPi0
int m_nPion
bool m_ReadBeamEFromDB
ReadBeamInfFromDb m_readDb


Constructor & Destructor Documentation

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

00050                                                                                              :
00051 Algorithm(name, pSvcLocator)  {
00052   //Declare the properties
00053   declareProperty( "debug",           m_debug = false );
00054   declareProperty( "ReadBeamEFromDB", m_ReadBeamEFromDB = false );
00055   declareProperty( "BeamE",           m_beamE = 1.8865 ); 
00056   declareProperty( "DpList",          m_decaylist = "test.txt" );
00057 }

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


Member Function Documentation

StatusCode ChargedDReconstruction::execute  ) 
 

StatusCode ChargedDReconstruction::execute  ) 
 

00091                                            {
00092   MsgStream log(msgSvc(), name());
00093   log << MSG::INFO << "in execute()" << endreq;
00094 
00095   StatusCode sc;
00096 
00098   // Read REC data
00100   SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00101   int event= eventHeader->eventNumber();
00102   // if ( m_debug || ( (event & 0x3FF) == 0 ) )
00103   //std::cout << "event: " << event << std::endl;
00104 
00105   SmartDataPtr<EvtRecEvent> recEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
00106   SmartDataPtr<EvtRecTrackCol> recTrackCol(eventSvc(), EventModel::EvtRec::EvtRecTrackCol);
00107   log << MSG::DEBUG << "run and event = " << eventHeader->runNumber()
00108                                         << " " << eventHeader->eventNumber() << endreq;
00109   log << MSG::DEBUG <<"ncharg, nneu, tottks = "
00110           << recEvent->totalCharged() << " , "
00111           << recEvent->totalNeutral() << " , "
00112       << recEvent->totalTracks() <<endreq;
00113   
00114   EvtRecTrackIterator charged_begin = recTrackCol->begin();
00115   EvtRecTrackIterator charged_end = charged_begin + recEvent->totalCharged();
00116 
00117   EvtRecTrackIterator neutral_begin = recTrackCol->begin()+recEvent->totalCharged();
00118   EvtRecTrackIterator neutral_end = recTrackCol->begin()+recEvent->totalTracks();
00119 
00120   
00121   SmartDataPtr<EvtRecPi0Col> recPi0Col(eventSvc(), "/Event/EvtRec/EvtRecPi0Col");
00122   if ( ! recPi0Col ) {
00123     log << MSG::FATAL << "Could not find EvtRecPi0Col" << endreq;
00124     return StatusCode::FAILURE;
00125   }
00126 
00127 
00128   SmartDataPtr<EvtRecEtaToGGCol> recEtaToGGCol(eventSvc(), "/Event/EvtRec/EvtRecEtaToGGCol");
00129   if ( ! recEtaToGGCol ) {
00130     log << MSG::FATAL << "Could not find EvtRecEtaToGGCol" << endreq;
00131     return StatusCode::FAILURE;
00132   }
00133   
00134 
00135   SmartDataPtr<EvtRecVeeVertexCol> recVeeVertexCol(eventSvc(), "/Event/EvtRec/EvtRecVeeVertexCol");
00136    if ( ! recVeeVertexCol ) {
00137      log << MSG::FATAL << "Could not find EvtRecVeeVertexCol" << endreq;
00138      return StatusCode::FAILURE;
00139    }
00140    
00141 
00142   SmartDataPtr<EvtRecDTagCol> recDTagCol(eventSvc(), EventModel::EvtRec::EvtRecDTagCol);
00143   if (!recDTagCol) {
00144     log << MSG::FATAL << "EvtRecDTagCol is not registered yet" << endreq;
00145     return StatusCode::FAILURE;
00146   }
00147   //registered in DTag.cxx
00148   /*
00149   if (!recDTagCol) {
00150     recDTagCol = new EvtRecDTagCol;
00151     sc = registerEvtRecDTagCol(recDTagCol, log);
00152     if (sc != StatusCode::SUCCESS) {
00153       return sc;
00154     }
00155   }
00156   */
00157   
00159   //reconstruct particle lists
00161   pionSelector.setpidtype(0);
00162   kaonSelector.setpidtype(0);
00163   CDChargedPionList pionList(charged_begin, charged_end, pionSelector);
00164   CDChargedKaonList kaonList(charged_begin, charged_end, kaonSelector);
00165  
00166   
00167   CDKsList          ksList(ksSelector);
00168   dc_fill(ksList,  recVeeVertexCol->begin(), recVeeVertexCol->end());
00169   
00170   CDPi0List         pi0List(pi0Selector);
00171   dc_fill(pi0List, recPi0Col->begin(), recPi0Col->end());
00172   
00173   CDEtaList         etaList(etatoGGSelector);
00174   dc_fill(etaList, recEtaToGGCol->begin(), recEtaToGGCol->end());
00175 
00176   //pion/kaon list with PID
00177   pionSelector.setpidtype(1);
00178   kaonSelector.setpidtype(1);
00179   CDChargedPionList pionList_tight(charged_begin, charged_end, pionSelector);
00180   CDChargedKaonList kaonList_tight(charged_begin, charged_end, kaonSelector);
00181 
00182   
00183 
00184   int run  = eventHeader->runNumber();
00185   m_ievt  = eventHeader->eventNumber();
00186   m_nChrg = recEvent->totalCharged();
00187   m_nNeu  = recEvent->totalNeutral();
00188   m_nPion = pionList.size();
00189   m_nKaon = kaonList.size();
00190   m_nPi0  = pi0List.size();
00191   m_nKs   = ksList.size();
00192   
00193   
00195   // get beam energy
00197   
00198 
00199   
00200   if(m_ReadBeamEFromDB && run>0 && m_irun!=run){
00201     m_irun=run;
00202     m_beamE=m_readDb.getbeamE(m_irun,m_beamE);
00203   }
00204   double ebeam=m_beamE;
00205   
00206 
00208   //reconstruct decay lists
00210   
00211   
00212   for(int list=0;list<chanlist.size();list++){
00213     
00214     string channel=chanlist[list];
00215     vector<int> numchan;
00216     chargedDSelector.setebeam(ebeam);
00217     CDDecayList decaylist(chargedDSelector);
00218 
00219     //K+/-: 1, Pi+/-:2,  Pi0:3, Eta: 4, Ks:5
00220     //the fist element of the vector stands for decay mode,
00221     //the rest will be particles, and size of the vector minus 1 will be number of daughers.
00222     
00223     if(channel=="DptoKPiPi") {
00224       numchan.push_back( EvtRecDTag::kDptoKPiPi );
00225       numchan.push_back(1);
00226       numchan.push_back(2);
00227       numchan.push_back(2);
00228       decaylist=kaonList.minus()* pionList.plus()* pionList.plus();
00229     }
00230     else if(channel=="DptoKPiPiPi0") {
00231       numchan.push_back( EvtRecDTag::kDptoKPiPiPi0 );
00232       numchan.push_back(1);
00233       numchan.push_back(2);
00234       numchan.push_back(2);
00235       numchan.push_back(3);
00236       decaylist=kaonList.minus()* pionList.plus()* pionList.plus()* pi0List;
00237     }
00238     else if(channel=="DptoKsPi") {
00239       numchan.push_back( EvtRecDTag::kDptoKsPi );
00240       numchan.push_back(5);
00241       numchan.push_back(2);
00242       decaylist=ksList* pionList.plus();
00243     }
00244     else if(channel=="DptoKsPiPi0") {
00245       numchan.push_back( EvtRecDTag::kDptoKsPiPi0 );
00246       numchan.push_back(5);
00247       numchan.push_back(2);
00248       numchan.push_back(3);
00249       decaylist=ksList* pionList.plus()* pi0List;
00250     }
00251     else if(channel=="DptoKsPiPiPi") {
00252       numchan.push_back( EvtRecDTag::kDptoKsPiPiPi );
00253       numchan.push_back(5);
00254       numchan.push_back(2);
00255       numchan.push_back(2);
00256       numchan.push_back(2);
00257       decaylist=ksList* pionList.plus()* pionList.plus()* pionList.minus();
00258     }
00259     else if(channel=="DptoKKPi") {
00260       numchan.push_back( EvtRecDTag::kDptoKKPi );
00261       numchan.push_back(1);
00262       numchan.push_back(1);
00263       numchan.push_back(2);
00264       decaylist=kaonList.minus()* kaonList.plus()* pionList.plus();
00265     }
00266     else if(channel=="DptoPiPi0") {
00267       numchan.push_back( EvtRecDTag::kDptoPiPi0 );
00268       numchan.push_back(2);
00269       numchan.push_back(3);
00270       decaylist=pionList.plus()* pi0List;
00271     }
00272     else if(channel=="DptoKPi0") {
00273       numchan.push_back( EvtRecDTag::kDptoKPi0 );
00274       numchan.push_back(1);
00275       numchan.push_back(3);
00276       decaylist=kaonList.plus()* pi0List;
00277     }
00278     else if(channel=="DptoKsK") {
00279       numchan.push_back( EvtRecDTag::kDptoKsK );
00280       numchan.push_back(5);
00281       numchan.push_back(1);
00282       decaylist=ksList* kaonList.plus();
00283     }
00284     else if(channel=="DptoPiPiPi") {
00285       numchan.push_back( EvtRecDTag::kDptoPiPiPi );
00286       numchan.push_back(2);
00287       numchan.push_back(2);
00288       numchan.push_back(2);
00289       decaylist=pionList.plus()* pionList.plus()* pionList.minus() ;
00290     }
00291     else if(channel=="DptoPiPi0Pi0") {
00292       numchan.push_back( EvtRecDTag::kDptoPiPi0Pi0 );
00293       numchan.push_back(2);
00294       numchan.push_back(3);
00295       numchan.push_back(3);
00296       decaylist=pionList.plus()* pi0List* pi0List;
00297     }
00298     else if(channel=="DptoKsKsPi") {
00299       numchan.push_back( EvtRecDTag::kDptoKsKsPi );
00300       numchan.push_back(5);
00301       numchan.push_back(5);
00302       numchan.push_back(2);
00303       decaylist=ksList* ksList* pionList.plus();
00304     }
00305     else if(channel=="DptoKsKPi0") {
00306       numchan.push_back( EvtRecDTag::kDptoKsKPi0 );
00307       numchan.push_back(5);
00308       numchan.push_back(1);
00309       numchan.push_back(3);
00310       decaylist=ksList* kaonList.plus()* pi0List;
00311     }
00312     else if(channel=="DptoKsKsK") {
00313       numchan.push_back( EvtRecDTag::kDptoKsKsK );
00314       numchan.push_back(5);
00315       numchan.push_back(5);
00316       numchan.push_back(1);
00317       decaylist=ksList* ksList* kaonList.plus();
00318     }
00319     else if(channel=="DptoPiPiPiPi0") {
00320       numchan.push_back( EvtRecDTag::kDptoPiPiPiPi0 );
00321       numchan.push_back(2);
00322       numchan.push_back(2);
00323       numchan.push_back(2);
00324       numchan.push_back(3);
00325       decaylist=pionList.plus()* pionList.plus()* pionList.minus()* pi0List;
00326     }
00327     else if(channel=="DptoKsPiPi0Pi0") {
00328       numchan.push_back( EvtRecDTag::kDptoKsPiPi0Pi0 );
00329       numchan.push_back(5);
00330       numchan.push_back(2);
00331       numchan.push_back(3);
00332       numchan.push_back(3);
00333       decaylist=ksList* pionList.plus()* pi0List* pi0List;
00334     }
00335     else if(channel=="DptoKsKplusPiPi") {
00336       numchan.push_back( EvtRecDTag::kDptoKsKplusPiPi );
00337       numchan.push_back(5);
00338       numchan.push_back(1);
00339       numchan.push_back(2);
00340       numchan.push_back(2);
00341       decaylist=ksList* kaonList.plus()* pionList.plus()* pionList.minus();
00342     }
00343     else if(channel=="DptoKsKminusPiPi") {
00344       numchan.push_back( EvtRecDTag::kDptoKsKminusPiPi );
00345       numchan.push_back(5);
00346       numchan.push_back(1);
00347       numchan.push_back(2);
00348       numchan.push_back(2);
00349       decaylist=ksList* kaonList.minus()* pionList.plus()* pionList.plus();
00350     }
00351     else if(channel=="DptoKKPiPi0") {
00352       numchan.push_back( EvtRecDTag::kDptoKKPiPi0 );
00353       numchan.push_back(1);
00354       numchan.push_back(1);
00355       numchan.push_back(2);
00356       numchan.push_back(3);
00357       decaylist=kaonList.minus()* kaonList.plus()* pionList.plus()* pi0List;
00358     }
00359     else if(channel=="DptoPiPiPiPiPi") {
00360       numchan.push_back( EvtRecDTag::kDptoPiPiPiPiPi );
00361       numchan.push_back(2);
00362       numchan.push_back(2);
00363       numchan.push_back(2);
00364       numchan.push_back(2);
00365       numchan.push_back(2);
00366       decaylist=pionList.plus()* pionList.plus()* pionList.plus()* pionList.minus()* pionList.minus();
00367     }
00368     else if(channel=="DptoKPiPiPiPi") {
00369       numchan.push_back( EvtRecDTag::kDptoKPiPiPiPi );
00370       numchan.push_back(1);
00371       numchan.push_back(2);
00372       numchan.push_back(2);
00373       numchan.push_back(2);
00374       numchan.push_back(2);
00375       decaylist=kaonList.plus()* pionList.plus()* pionList.plus()* pionList.minus()* pionList.minus();
00376     }
00377     else if(channel=="DptoPiEta") {
00378       numchan.push_back( EvtRecDTag::kDptoPiEta );
00379       numchan.push_back(2);
00380       numchan.push_back(4);
00381       decaylist=pionList.plus()* etaList;
00382     }
00383     else if(channel=="DptoKsPiEta") {
00384       numchan.push_back( EvtRecDTag::kDptoKsPiEta );
00385       numchan.push_back(5);
00386       numchan.push_back(2);
00387       numchan.push_back(4);
00388       decaylist=ksList* pionList.plus()* etaList;
00389     }
00390     
00391     CDDecayList::iterator D_begin =decaylist.particle_begin();
00392     CDDecayList::iterator D_end   =decaylist.particle_end();
00393 
00394     for ( CDDecayList::iterator it = D_begin; it != D_end; it++ ) {
00395       
00396       EvtRecDTag* recDTag = new EvtRecDTag;
00397       recDTag->setdecayMode( (EvtRecDTag::DecayMode)numchan[0] );
00398 
00399       vector<int> trackid, showerid;
00400       vector<int> kaonid, pionid;
00401       int numofchildren=numchan.size()-1;
00402 
00403       for(int i=0; i< numofchildren;i++){
00404         
00405         const CDCandidate& daughter=(*it).particle().child(i);
00406         
00407         if(numchan[i+1]==1){
00408           const EvtRecTrack* track=daughter.track();
00409           trackid.push_back(track->trackId());
00410           kaonid.push_back(track->trackId());
00411         }
00412         else if(numchan[i+1]==2){
00413           const EvtRecTrack* track=daughter.track();
00414           trackid.push_back(track->trackId());
00415           pionid.push_back(track->trackId());
00416         }
00417         else if ( numchan[i+1]==3){
00418           const EvtRecTrack* hiEnGamma=daughter.navPi0()->hiEnGamma();
00419           const EvtRecTrack* loEnGamma=daughter.navPi0()->loEnGamma();
00420           showerid.push_back(hiEnGamma->trackId());
00421           showerid.push_back(loEnGamma->trackId());
00422         }
00423         else if ( numchan[i+1]==4){
00424           const EvtRecTrack* hiEnGamma=daughter.navEta()->hiEnGamma();
00425           const EvtRecTrack* loEnGamma=daughter.navEta()->loEnGamma();
00426           showerid.push_back(hiEnGamma->trackId());
00427           showerid.push_back(loEnGamma->trackId());
00428         }
00429         else if ( numchan[i+1]==5){
00430           EvtRecVeeVertex* aKsCand = const_cast<EvtRecVeeVertex*>( daughter.navKshort() );
00431           EvtRecTrack* pion1Trk = aKsCand->daughter(0);
00432           EvtRecTrack* pion2Trk = aKsCand->daughter(1);    
00433           trackid.push_back(pion1Trk->trackId());
00434           trackid.push_back(pion2Trk->trackId());
00435         }
00436         
00437       }//end of filling track and shower ids
00438       
00439       
00440       saveDpInfo(it, ebeam, numofchildren, recDTag);
00441       savetrack(trackid,showerid,charged_begin,charged_end,neutral_begin,neutral_end,recDTag);
00442       pidtag(kaonid,pionid,kaonList_tight, pionList_tight,recDTag);
00443       
00444       trackid.clear();
00445       showerid.clear();
00446       kaonid.clear();
00447       pionid.clear();
00448 
00449       
00450       //write dtag object out
00451       recDTagCol->push_back(recDTag);
00452       
00453     }//end of decaylist iterator
00454 
00455     numchan.clear();
00456 
00457   }//end of reconstrucing all D+ decay lists
00458 
00459     
00460 
00461   return StatusCode::SUCCESS;
00462 }

StatusCode ChargedDReconstruction::finalize  ) 
 

StatusCode ChargedDReconstruction::finalize  ) 
 

00071                                             {
00072   MsgStream log(msgSvc(), name());
00073   log << MSG::INFO << "in finalize()" << endreq;
00074 
00075   chanlist.clear();
00076   
00077   return StatusCode::SUCCESS;
00078 }

vector<string> ChargedDReconstruction::getlist string &  filename  ) 
 

vector< string > ChargedDReconstruction::getlist string &  filename  ) 
 

00594                                                                {
00595 
00596   string channel;
00597   vector<string> temp;
00598   
00599   ifstream inFile;
00600  
00601   inFile.open(filename.c_str());
00602   if (!inFile) {
00603     cout << "Unable to open decay list file";
00604     exit(1); // terminate with error
00605   }
00606     
00607   while (inFile >> channel) {
00608     temp.push_back(channel);
00609   }
00610     
00611   inFile.close();
00612   
00613   return temp;
00614   
00615 }

StatusCode ChargedDReconstruction::initialize  ) 
 

StatusCode ChargedDReconstruction::initialize  ) 
 

00060                                               {
00061   MsgStream log(msgSvc(), name());
00062   log << MSG::INFO << "in initialize()" <<endreq;
00063   
00064   m_irun=-100;
00065   chanlist=getlist(m_decaylist);
00066 
00067   return StatusCode::SUCCESS;
00068 }

void ChargedDReconstruction::pidtag vector< int >  ,
vector< int >  ,
CDChargedKaonList ,
CDChargedPionList ,
EvtRecDTag
 

void ChargedDReconstruction::pidtag vector< int >  ,
vector< int >  ,
CDChargedKaonList ,
CDChargedPionList ,
EvtRecDTag
 

00542                                                                                                                                                        {
00543 
00544   bool iskaon=false,ispion=false;
00545   
00546   
00547   // save track ids which passed pion/kaon cuts
00548 
00549   for (CDChargedKaonList::iterator kit = kaonList.particle_begin(); kit != kaonList.particle_end(); kit++) {
00550     recDTag->addKaonId( (*kit).particle().track() );
00551   }
00552 
00553   for (CDChargedPionList::iterator pit = pionList.particle_begin(); pit != pionList.particle_end(); pit++) {
00554     recDTag->addPionId( (*pit).particle().track() );
00555   }
00556   
00557 
00558   
00559   for(int i=0; i<kaonid.size(); i++){
00560     bool ithkaon=false;
00561     for (CDChargedKaonList::iterator kit = kaonList.particle_begin(); kit != kaonList.particle_end(); kit++) {
00562       if((*kit).particle().track()->trackId()==kaonid[i]){
00563         ithkaon=true;
00564         break;
00565       }
00566     }
00567     if(!ithkaon) break;
00568     if(i==kaonid.size()-1)
00569       iskaon=true;
00570   }
00571 
00572   for(int i=0; i<pionid.size(); i++){
00573     bool ithpion=false;
00574     for (CDChargedPionList::iterator pit = pionList.particle_begin(); pit != pionList.particle_end(); pit++) {
00575       if((*pit).particle().track()->trackId()==pionid[i]){
00576         ithpion=true;
00577         break;
00578       }
00579     }
00580     if(!ithpion) break;
00581     if(i==pionid.size()-1)
00582       ispion=true;
00583   }
00584   
00585 
00586   if( iskaon && ispion)
00587     recDTag->settype( EvtRecDTag::Tight );
00588   else if( (kaonid.size()==0 && ispion) || (pionid.size()==0 && iskaon))
00589     recDTag->settype( EvtRecDTag::Tight );
00590 }

StatusCode ChargedDReconstruction::registerEvtRecDTagCol EvtRecDTagCol dtagCol,
MsgStream &  log
[private]
 

StatusCode ChargedDReconstruction::registerEvtRecDTagCol EvtRecDTagCol dtagCol,
MsgStream &  log
[private]
 

00081                                                       {
00082   StatusCode sc = eventSvc()->registerObject("/Event/EvtRec/EvtRecDTagCol",
00083                                              aNewEvtRecDTagCol);
00084   if (sc != StatusCode::SUCCESS) {
00085     log << MSG::FATAL << "Could not register EvtRecDTagCol in TDS!" << endreq;
00086   }
00087   return sc;
00088 }

void ChargedDReconstruction::saveDpInfo CDDecayList::iterator  ,
double  ,
int  ,
EvtRecDTag
 

void ChargedDReconstruction::saveDpInfo CDDecayList::iterator  ,
double  ,
int  ,
EvtRecDTag
 

00465                                                                                                                     {
00466   
00467   double mass = (*it).particle().mass();
00468   int charge= (*it).particle().charge();
00469   HepLorentzVector p4((*it).particle().momentum(), (*it).particle().energy());
00470   recDTag->setp4(p4);
00471   
00472   p4.boost(-0.011, 0, 0);
00473   double mbc2_CMS = ebeam*ebeam - p4.v().mag2();
00474   double mbc_CMS = mbc2_CMS > 0 ? sqrt( mbc2_CMS ) : -10;
00475   double deltaE_CMS = p4.t() - ebeam;
00476   
00477   recDTag->settype( EvtRecDTag::Loose );
00478   recDTag->setcharge(charge);
00479   recDTag->setcharm(charge);
00480   recDTag->setnumOfChildren(numofchildren);
00481   recDTag->setmass(mass);
00482   recDTag->setmBC(mbc_CMS);
00483   recDTag->setbeamE(ebeam);
00484   recDTag->setdeltaE(deltaE_CMS);
00485   
00486 }

void ChargedDReconstruction::savetrack vector< int >  ,
vector< int >  ,
EvtRecTrackIterator  ,
EvtRecTrackIterator  ,
EvtRecTrackIterator  ,
EvtRecTrackIterator  ,
EvtRecDTag
 

void ChargedDReconstruction::savetrack vector< int >  ,
vector< int >  ,
EvtRecTrackIterator  ,
EvtRecTrackIterator  ,
EvtRecTrackIterator  ,
EvtRecTrackIterator  ,
EvtRecDTag
 

00489                                                                                                                              {
00490 
00491   vector<EvtRecTrackIterator> trktemp;
00492   vector<EvtRecTrackIterator> shrtemp;
00493  
00494   //fill tracks
00495   for(EvtRecTrackIterator trk=charged_begin; trk<charged_end;trk++){
00496 
00497     bool isothertrack=true;
00498     for(int i=0; i<trackid.size(); i++){
00499       if( (*trk)->trackId()==trackid[i] ){
00500         trktemp.push_back(trk);
00501         isothertrack=false;
00502         break;
00503       }
00504     }
00505     if(isothertrack)
00506       recDTag->addOtherTrack(*trk);
00507   }
00508   for(int i=0; i<trackid.size();i++){
00509     for(int j=0; j<trktemp.size(); j++){
00510       EvtRecTrackIterator trk=trktemp[j];
00511       if( (*trk)->trackId()==trackid[i])
00512         recDTag->addTrack(*trktemp[j]);
00513     }
00514   }
00515 
00516   
00517   //fill showers
00518   for(EvtRecTrackIterator shr=neutral_begin; shr<neutral_end;shr++){
00519     bool isothershower=true;
00520     for(int i=0; i<showerid.size(); i++){
00521       if( (*shr)->trackId()==showerid[i] ){
00522         shrtemp.push_back(shr);
00523         isothershower=false;
00524         break;
00525       }
00526     }
00527     if(isothershower)
00528       recDTag->addOtherShower(*shr);
00529   }
00530 
00531   for(int i=0; i<showerid.size();i++){
00532     for(int j=0; j<shrtemp.size(); j++){
00533       EvtRecTrackIterator shr=shrtemp[j];
00534       if( (*shr)->trackId()==showerid[i])
00535         recDTag->addShower(*shrtemp[j]);
00536     }
00537   }
00538   
00539   
00540 }


Member Data Documentation

vector<string> ChargedDReconstruction::chanlist [private]
 

vector<string> ChargedDReconstruction::chanlist [private]
 

double ChargedDReconstruction::m_beamE [private]
 

bool ChargedDReconstruction::m_debug [private]
 

string ChargedDReconstruction::m_decaylist [private]
 

int ChargedDReconstruction::m_ievt [private]
 

int ChargedDReconstruction::m_irun [private]
 

int ChargedDReconstruction::m_nChrg [private]
 

int ChargedDReconstruction::m_nKaon [private]
 

int ChargedDReconstruction::m_nKs [private]
 

int ChargedDReconstruction::m_nNeu [private]
 

int ChargedDReconstruction::m_nPi0 [private]
 

int ChargedDReconstruction::m_nPion [private]
 

bool ChargedDReconstruction::m_ReadBeamEFromDB [private]
 

ReadBeamInfFromDb ChargedDReconstruction::m_readDb [private]
 


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