Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

TMBTRefs.cpp

Go to the documentation of this file.
00001 
00002 //                                                                        //
00003 // File: TMBTRefs.cpp                                                     //
00004 //                                                                        //
00005 // Purpose:  Container of TRefArray's for related TMB physics objects     //
00006 //                                                                        //
00007 // Created: 22-MAY-2002  Serban Protopopescu                              //
00008 //                                                                        //
00010 
00011 #include "tmb_tree/TMBTRefs.hpp"
00012 
00013 ClassImp(TMBTRefs)
00014 
00015 TMBTRefs::TMBTRefs(TRefArray* ems, TRefArray* muons, TRefArray* taus, TRefArray* jets,
00016                    TRefArray* mcparts)
00017 {
00018   _ems.Clear();
00019   if (ems) {
00020     for (Int_t i=0; i<ems->GetLast()+1; i++) {
00021       _ems.Add( ems->At(i) );
00022     }
00023   }
00024  
00025   _muons.Clear();
00026   if (muons) {
00027     for (Int_t i=0; i<muons->GetLast()+1; i++) {
00028       _muons.Add( muons->At(i) );
00029     }
00030   }
00031 
00032   _taus.Clear();
00033   if (taus) {
00034     for (Int_t i=0; i<taus->GetLast()+1; i++) {
00035       _taus.Add( taus->At(i) );
00036     }
00037   }
00038 
00039   _jets.Clear();
00040   if (jets) {
00041     for (Int_t i=0; i<jets->GetLast()+1; i++) {
00042       _jets.Add( jets->At(i) );
00043     }
00044   }
00045 
00046   _mcparts.Clear();
00047   if (mcparts) {
00048     for (Int_t i=0; i<mcparts->GetLast()+1; i++) {
00049       _mcparts.Add( mcparts->At(i) );
00050     }
00051   }
00052 }
00053 
00054 const TMBMCpart* TMBTRefs::mcmatch(const TMBEMCluster* emcl) const{
00055   int nparts=NMCparts();
00056   const TMBMCpart* mcpart=0;
00057   if(nparts==0) return mcpart;
00058   int nems=NEmcls();
00059   if(nems==0) return mcpart;
00060 
00061   for(int ip=0; ip<nparts; ++ip){
00062     mcpart=getTMBMCpart(ip);
00063     for(int iem=0; iem<nems && abs(mcpart->pdgid())==11 ; ++iem){
00064       if(emcl==getEmcl(iem)) return mcpart;
00065     }
00066   }
00067   mcpart=0;
00068   return mcpart;
00069 }
00070 
00071 const TMBMCpart* TMBTRefs::mcmatch(const TMBMuon* muon) const{
00072 
00073   int nparts=NMCparts();
00074   const TMBMCpart* mcpart=0;
00075   if(nparts==0) return mcpart;
00076   int nmuons=NMuons();
00077   if(nmuons==0) return mcpart;
00078 
00079   for(int ip=0; ip<nparts; ++ip){
00080     mcpart=getTMBMCpart(ip);
00081     for(int imu=0; imu<nmuons && abs(mcpart->pdgid())==13 ; ++imu){
00082       if(muon==getMuon(imu)) return mcpart;
00083     }
00084   }
00085   mcpart=0;
00086   return mcpart;
00087 }
00088 
00089 const TMBMCpart* TMBTRefs::mcmatch(const TMBTau* tau) const{
00090   int nparts=NMCparts();
00091   const TMBMCpart* mcpart=0;
00092   if(nparts==0) return mcpart;
00093   int ntaus=NTaus();
00094   if(ntaus==0) return mcpart;
00095 
00096   for(int ip=0; ip<nparts; ++ip){
00097     mcpart=getTMBMCpart(ip);
00098     for(int itau=0; itau<ntaus && abs(mcpart->pdgid())==15 ; ++itau){
00099       if(tau==getTau(itau)) return mcpart;
00100     }
00101   }
00102   mcpart=0;
00103   return mcpart;
00104 }
00105 
00106 bool TMBTRefs::isInThis(TObject* objptr) const{
00107 
00108   int n=NEmcls();
00109   for(int i=0; i<n; ++i){
00110     if(objptr == _ems.At(i)) return true;
00111   }
00112 
00113   n=NMuons();
00114   for(int i=0; i<n; ++i){
00115     if(objptr == _muons.At(i)) return true;
00116   }
00117 
00118   n=NTaus();
00119   for(int i=0; i<n; ++i){
00120     if(objptr == _taus.At(i)) return true;
00121   }
00122 
00123   n=NJets();
00124   for(int i=0; i<n; ++i){
00125     if(objptr == _jets.At(i)) return true;
00126   }
00127 
00128   n=NMuons();
00129   for(int i=0; i<n; ++i){
00130     if(objptr == _muons.At(i)) return true;
00131   }
00132 
00133   n=NMCparts();
00134   for(int i=0; i<n; ++i){
00135     if(objptr == _mcparts.At(i)) return true;
00136   }
00137   return false;
00138 }
00139         

Generated on Tue Mar 28 10:13:05 2006 for CAF by doxygen 1.3.4