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

test_print.cpp

Go to the documentation of this file.
00001 
00002 #include <XANADOO/domain/interface/XANAEsdEvent.h>
00003 #include <XANADOO/XANAClusters/interface/XANACluster.h>
00004 #include <XANADOO/XANAClusters/interface/XANACaloRecHit.h>
00005 #include <XANADOO/XANAClusters/interface/XANAEmCluster.h>
00006 #include <XANADOO/XANAClusters/interface/XANASuperCluster.h>
00007 #include <XANADOO/XANAClusters/interface/XANAHadCluster.h>
00008 #include <XANADOO/XANATracks/interface/XANATrack.h>
00009 #include <XANADOO/XANAMcInfo/interface/XANAGeneratorEvent.h>
00010 #include <XANADOO/XANAMcInfo/interface/XANAGeantEvent.h>
00011 #include <XANADOO/XANAMcInfo/interface/XANAGeneratorParticle.h>
00012 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronCandidate.h>
00013 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronTrack.h>
00014 #include <XANADOO/XANAElectronCandidate/interface/XANAElectronSeed.h>
00015 #include <XANADOO/XANAMuons/interface/XANAMuonCandidate.h>
00016 #include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
00017 #include <XANADOO/XANAJets/interface/XANAJet.h>
00018 
00019 #include <XANADOO/XANAGeometry/interface/XANAEcalGeometry.h>
00020 
00021 #include <XANADOO/XANAnalysisRS/interface/RSElecSelector.h>
00022 #include <XANADOO/XANAnalysisRS/interface/RSCorrectionFunc.h>
00023 #include <XANADOO/XANAnalysisRS/interface/RSSaturation.h>
00024 #include <XANADOO/XANAnalysisRS/interface/RSPhotonAssoc.h>
00025 #include <XANADOO/XANAnalysisRS/interface/ClassRSElec.h>
00026 #include <XANADOO/XANAnalysisRS/interface/RSVertexCorr.h>
00027 #include <XANADOO/XANAnalysisRS/interface/RSDistribAng.h>
00028 #include <XANADOO/XANAnalysisRS/interface/RSMassEstim.h>
00029 
00030 
00031 #include "TTree.h"
00032 #include "TBits.h"
00033 #include "TObjectTable.h"
00034 #include "TFile.h"
00035 #include "TBranch.h"
00036 #include "TClonesArray.h"
00037 #include "TObjArray.h"
00038 #include "TH1.h"
00039 #include "TH2.h"
00040 #include "TSystem.h"
00041 #include "TChain.h"
00042 
00043 #include <string>
00044 
00045 using namespace std;
00046 
00047 Short_t ne_candidatelectron=0,ns_supercluster=0;
00048 TObjArray *genpart = 0;  
00049 TObjArray *clusters = 0;
00050 TObjArray *hadClusters = 0;
00051 TObjArray *superClusters = 0;
00052 TObjArray *preshClusters = 0;
00053 TRefArray *hits = 0;
00054 TObjArray *tracks = 0;
00055 TObjArray *vertices = 0;
00056 TObjArray *electrons = 0;
00057 TObjArray *electronTracks = 0;
00058 TObjArray *muons = 0;
00059 
00060 
00061  
00062   
00063 int main(int argc, char** argv)
00064 {
00065   //   Connect to file generated
00066   TFile *f;
00067     //  if (argc==1) f = new TFile("SE04_E25_Pall_PT30.root");
00068   if (argc==1) f = new TFile("rsG1tev5_100.root");
00069 
00070   else f = new TFile(*++argv);
00071  
00072     //   Read Tree named "T" in memory. Tree pointer is assigned the same name
00073   TTree *T = (TTree*)f->Get("ESD");
00074 
00075    
00076 // version TChain
00077 //   TChain *T = new TChain("ESD");
00078 //   T->Add("file1.root");
00079 //   T->Add("file2.root");
00080  
00081 // example of how to suppress reading of branches
00082 // has to be put before setting the branch addresses!
00083 // T->SetBranchStatus("GeantEvent*",0);
00084 
00085 // Reconstructed event
00086   XANAEsdEvent *event = new XANAEsdEvent();  
00087   T->SetBranchAddress("Event.",&event);
00088   // MC information (generator and GEANT event)
00089   XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent();
00090   T->SetBranchAddress("GeneratorEvent.",&generatorEvent);
00091     
00092   XANAGeantEvent *geantEvent = new XANAGeantEvent();
00093   T->SetBranchAddress("GeantEvent.",&geantEvent);
00094   
00095   //   Start main loop on all events
00096   Int_t nb = 0; 
00097   Int_t nevent = (Int_t)T->GetEntries();
00098 
00099   nevent =5;
00100 
00101   cout <<  "Nombre d entrees a traiter : " << nevent << endl; 
00102   for (Int_t i=0; i<nevent; i++) {
00103     nb += T->GetEntry(i); 
00104 
00105     cout << " Graviton for event " << i << endl;
00106 
00107        // Monte Carlo information
00108    
00109       // generator event
00110     Short_t mc_np = 0, mc_nsp = 0, mc_nssp = 0, mc_npp = 0, mc_nspp = 0 ;
00111     mc_np   = generatorEvent->getNumberOfParticles();
00112     mc_nsp  = generatorEvent->getNumberOfSignalParticles();
00113     mc_nssp = generatorEvent->getNumberOfStableSignalParticles();
00114     mc_npp  = generatorEvent->getNumberOfPileupParticles();
00115     mc_nspp = generatorEvent->getNumberOfStablePileupParticles();
00116     genpart=generatorEvent->getParticles();
00117     int npart=0,iRSgrav=11,ilink1=0,ilink2=0;
00118     for (int gp=0;gp<mc_np;gp++) {
00119          XANAGeneratorParticle *gpart = (XANAGeneratorParticle *)((*genpart)[gp]);
00120          if ((gpart->getPartId()==11 || gpart->getPartId()==-11) &&  gpart->getMo1()==12 )
00121          { 
00122                if (npart==0)
00123                {
00124                     // elec 1
00125                     npart++;
00126                     ilink1=gp;
00127                }
00128                else if (npart==1)
00129                {
00130                     //elec 2
00131                    npart++;
00132                    ilink2=gp;
00133                }
00134                else 
00135                {
00136                    cout << " pas possible d'avoir 3 electrons rattaches au RSgrav " << endl;
00137                }
00138          } 
00139     }
00140     XANAGeneratorParticle *gRSgrav = (XANAGeneratorParticle *)((*genpart)[iRSgrav]);
00141     XANAGeneratorParticle *gElec1 = (XANAGeneratorParticle *)((*genpart)[ilink1]);
00142     XANAGeneratorParticle *gElec2 = (XANAGeneratorParticle *)((*genpart)[ilink2]);
00143 
00144     float trueMassGen=gRSgrav->getMass();
00145     float eeMassGen=RSMassGen(gElec1,gElec2);
00146     float costhetaGen = RSdistribAngGen(gElec1,gElec2);
00147 
00148     float eeMassRec=-1.;
00149     float costhetaRec = -2.;
00150 
00151 
00152     // Reconstructed event
00153     
00154     // Definitions
00155     Short_t nc = 0, nh = 0, nhc = 0, npc = 0,  nt = 0, nv = 0, nvt = 0;
00156     Short_t nm = 0, nelt = 0 ;    
00157   
00158 
00159     nc  = event->getNumberOfEmClusters();         clusters = event->getEmClusters(); 
00160     nh  = event->getNumberOfTrackHits();          hits = event->getEmClusterHits();   
00161     nhc = event->getNumberOfHadClusters();        hadClusters = event->getHadClusters();   
00162     ns_supercluster  = event->getNumberOfSuperClusters(); 
00163                                                   superClusters = event->getSuperClusters(); 
00164     npc = event->getNumberOfPreshClusters();      preshClusters = event->getPreshClusters(); 
00165     nt  = event->getNumberOfTracks();             tracks = event->getTracks();
00166     nv  = event->getNumberOfVertices();           vertices = event->getVertices();   
00167     nvt = event->getNumberOfVertexTracks(); 
00168     ne_candidatelectron  = event->getNumberOfElectronCandidates(); 
00169                                                   electrons = event->getElectronCandidates(); 
00170     nm  = event->getNumberOfMuonCandidates();     muons = event->getMuonCandidates(); 
00171     nelt    = event->getNumberOfElectronTracks(); electronTracks = event->getElectronTracks();
00172 
00173 
00174             
00175     
00176     // electrons
00177     Int_t indexel1=-1, indexel2=-1;
00178     
00179     // Selection des 2 candidats electrons les plus energetiques
00180 
00181     RSSelection(indexel1, indexel2);
00182 
00183     // On ne travaille qu'avec les 2 Candidats Electrons les + energetiques
00184     
00185     if (indexel1>-1 && indexel2>-1)
00186     {
00187                XANAElectronCandidate *elec1 = (XANAElectronCandidate*)((*electrons)[indexel1]);
00188                XANAElectronCandidate *elec2 = (XANAElectronCandidate*)((*electrons)[indexel2]);
00189               
00190                float energy1 =elec1->getSuperClusterEnergy()/elec1->getSuperCluster()->getEnergyScaleFactor();
00191                float eta1    =elec1->getSuperCluster()->getPosition().eta();
00192                float phi1    =elec1->getSuperCluster()->getPosition().phi();
00193                
00194                float energy2 =elec2->getSuperClusterEnergy()/elec2->getSuperCluster()->getEnergyScaleFactor();
00195                float eta2    =elec2->getSuperCluster()->getPosition().eta();
00196                float phi2    =elec2->getSuperCluster()->getPosition().phi();
00197 
00198                cout << "RSSelection: elec1 " << energy1 << " Eta " << eta1 << " Phi " << phi1 << endl;
00199                cout << "RSSelection: elec2 " << energy2 << " Eta " << eta2 << " Phi " << phi2 << endl;
00200               
00201                // Traitement de la saturation
00202                int iflag_satur=0;
00203                RSSaturation(elec1, energy1, iflag_satur);
00204                cout << "RSSaturation: elec1 " << energy1 << " Sat? " << iflag_satur << endl;
00205 
00206                RSSaturation(elec2, energy2, iflag_satur);              
00207                cout << "RSSaturation: elec2 " << energy2 << " Sat? " << iflag_satur << endl;
00208                
00209                // Association des photons
00210                float EtIsol1=0.;
00211                float EtIsol2=0.;
00212                RSAssocPhoton(elec1, energy1, EtIsol1);
00213                RSAssocPhoton(elec2, energy2, EtIsol2);
00214 
00215                cout << "RSAssocPhoton: elec1 " << energy1 << " Iso " << EtIsol1 << endl; 
00216                cout << "RSAssocPhoton: elec2 " << energy2 << " Iso " << EtIsol2 << endl;
00217                
00218                // Correction de l'energie pour eta
00219                
00220                bool FAMOS=true;
00221                float xcor1=RSCorrectionFunc(energy1,  eta1,  FAMOS);
00222                float xcor2=RSCorrectionFunc(energy2,  eta2,  FAMOS);
00223                xcor1=1./xcor1;
00224                xcor2=1./xcor2;
00225                energy1*=xcor1;
00226                energy2*=xcor2;
00227 
00228                cout << "RSCorrectionFunc: elec1 " << energy1 << " xcor1 " << xcor1 << endl; 
00229                cout << "RSCorrectionFunc: elec2 " << energy2 << " xcor2 " << xcor2 << endl;
00230                
00231                // Candidat RSElec
00232                
00233                RSElec *cElec1 = new RSElec(elec1,energy1,eta1,phi1,EtIsol1);
00234                RSElec *cElec2 = new RSElec(elec2,energy2,eta2,phi2,EtIsol2);
00235 
00236                cout << " RSElec: cElec1 " << cElec1->getElecEnergy() << " Eta" << cElec1->getElecEta() <<
00237                        " Phi " << cElec1->getElecPhi() << " Iso " << cElec1->getElecIsol() << " Px " <<  cElec1->getElecPx() <<
00238                        " Py " << cElec1->getElecPy() << " Pz " << cElec1->getElecPz() << " Et " <<  cElec1->getElecEt() << endl;
00239                cout << " RSElec: cElec2 " << cElec2->getElecEnergy() << " Eta" << cElec2->getElecEta() <<
00240                        " Phi " << cElec2->getElecPhi() << " Iso " << cElec2->getElecIsol() << " Px " <<  cElec2->getElecPx() <<
00241                        " Py " << cElec2->getElecPy() << " Pz " << cElec2->getElecPz() << " Et " <<  cElec2->getElecEt() << endl;
00242 
00243                 // Masse Reconstruite
00244                 eeMassRec=RSMassRec(cElec1,cElec2);
00245                 
00246                 // Cut en iso (H/E pas encore dispo dans FAMOS 1_2_0)
00247                 if ( cElec1->getElecIsol()< 0.02* cElec1->getElecEt() &&
00248                      cElec2->getElecIsol()< 0.02* cElec2->getElecEt() )
00249                     {
00250                         costhetaRec = RSdistribAngRec(cElec1,cElec2);
00251 
00252                     }
00253 
00254 
00255     cout << " Graviton Mass " << trueMassGen << " ee-gen " << eeMassGen << " rec " << eeMassRec << endl;
00256     cout << " Graviton costheta : ee-gen " << costhetaGen << " rec " << costhetaRec << endl; 
00257 
00258     cout << endl;
00259 
00260 
00261     }
00262 
00263 
00264     event->clear(); 
00265     generatorEvent->clear();
00266     geantEvent->clear();
00267   }
00268   
00269 }
00270 
00271 
00272 

Generated on Thu Oct 27 21:59:46 2005 for XANADOO by doxygen 1.3.5