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

test_print.cpp File Reference

#include <XANADOO/domain/interface/XANAEsdEvent.h>
#include <XANADOO/XANAClusters/interface/XANACluster.h>
#include <XANADOO/XANAClusters/interface/XANACaloRecHit.h>
#include <XANADOO/XANAClusters/interface/XANAEmCluster.h>
#include <XANADOO/XANAClusters/interface/XANASuperCluster.h>
#include <XANADOO/XANAClusters/interface/XANAHadCluster.h>
#include <XANADOO/XANATracks/interface/XANATrack.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeneratorEvent.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeantEvent.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeneratorParticle.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronCandidate.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronTrack.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronSeed.h>
#include <XANADOO/XANAMuons/interface/XANAMuonCandidate.h>
#include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
#include <XANADOO/XANAJets/interface/XANAJet.h>
#include <XANADOO/XANAGeometry/interface/XANAEcalGeometry.h>
#include <XANADOO/XANAnalysisRS/interface/RSElecSelector.h>
#include <XANADOO/XANAnalysisRS/interface/RSCorrectionFunc.h>
#include <XANADOO/XANAnalysisRS/interface/RSSaturation.h>
#include <XANADOO/XANAnalysisRS/interface/RSPhotonAssoc.h>
#include <XANADOO/XANAnalysisRS/interface/ClassRSElec.h>
#include <XANADOO/XANAnalysisRS/interface/RSVertexCorr.h>
#include <XANADOO/XANAnalysisRS/interface/RSDistribAng.h>
#include <XANADOO/XANAnalysisRS/interface/RSMassEstim.h>
#include "TTree.h"
#include "TBits.h"
#include "TObjectTable.h"
#include "TFile.h"
#include "TBranch.h"
#include "TClonesArray.h"
#include "TObjArray.h"
#include "TH1.h"
#include "TH2.h"
#include "TSystem.h"
#include "TChain.h"
#include <string>

Include dependency graph for test_print.cpp:

Go to the source code of this file.

Functions

int main (int argc, char **argv)

Variables

Short_t ne_candidatelectron = 0ns_supercluster=0
TObjArray * genpart = 0
TObjArray * clusters = 0
TObjArray * hadClusters = 0
TObjArray * superClusters = 0
TObjArray * preshClusters = 0
TRefArray * hits = 0
TObjArray * tracks = 0
TObjArray * vertices = 0
TObjArray * electrons = 0
TObjArray * electronTracks = 0
TObjArray * muons = 0


Function Documentation

int main int  argc,
char **  argv
 

Definition at line 63 of file test_print.cpp.

References XANAGeantEvent::clear(), XANAGeneratorEvent::clear(), XANAEsdEvent::clear(), clusters, electrons, electronTracks, genpart, RSElec::getElecEnergy(), RSElec::getElecEt(), RSElec::getElecEta(), RSElec::getElecIsol(), RSElec::getElecPhi(), RSElec::getElecPx(), RSElec::getElecPy(), RSElec::getElecPz(), XANAEsdEvent::getElectronCandidates(), XANAEsdEvent::getElectronTracks(), XANAEsdEvent::getEmClusterHits(), XANAEsdEvent::getEmClusters(), XANASuperCluster::getEnergyScaleFactor(), XANAEsdEvent::getHadClusters(), XANAGeneratorParticle::getMass(), XANAGeneratorParticle::getMo1(), XANAEsdEvent::getMuonCandidates(), XANAEsdEvent::getNumberOfElectronCandidates(), XANAEsdEvent::getNumberOfElectronTracks(), XANAEsdEvent::getNumberOfEmClusters(), XANAEsdEvent::getNumberOfHadClusters(), XANAEsdEvent::getNumberOfMuonCandidates(), XANAGeneratorEvent::getNumberOfParticles(), XANAGeneratorEvent::getNumberOfPileupParticles(), XANAEsdEvent::getNumberOfPreshClusters(), XANAGeneratorEvent::getNumberOfSignalParticles(), XANAGeneratorEvent::getNumberOfStablePileupParticles(), XANAGeneratorEvent::getNumberOfStableSignalParticles(), XANAEsdEvent::getNumberOfSuperClusters(), XANAEsdEvent::getNumberOfTrackHits(), XANAEsdEvent::getNumberOfTracks(), XANAEsdEvent::getNumberOfVertexTracks(), XANAEsdEvent::getNumberOfVertices(), XANAGeneratorEvent::getParticles(), XANAGeneratorParticle::getPartId(), XANASuperCluster::getPosition(), XANAEsdEvent::getPreshClusters(), XANAElectronCandidate::getSuperCluster(), XANAElectronCandidate::getSuperClusterEnergy(), XANAEsdEvent::getSuperClusters(), XANAEsdEvent::getTracks(), XANAEsdEvent::getVertices(), hadClusters, hits, muons, ne_candidatelectron, preshClusters, RSAssocPhoton(), RSCorrectionFunc(), RSdistribAngGen(), RSdistribAngRec(), RSMassGen(), RSMassRec(), RSSaturation(), RSSelection(), superClusters, tracks, and vertices.

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 }


Variable Documentation

TObjArray* clusters = 0
 

Definition at line 49 of file test_print.cpp.

TObjArray* electrons = 0
 

Definition at line 56 of file test_print.cpp.

TObjArray* electronTracks = 0
 

Definition at line 57 of file test_print.cpp.

TObjArray* genpart = 0
 

Definition at line 48 of file test_print.cpp.

TObjArray* hadClusters = 0
 

Definition at line 50 of file test_print.cpp.

TRefArray* hits = 0
 

Definition at line 53 of file test_print.cpp.

TObjArray* muons = 0
 

Definition at line 58 of file test_print.cpp.

Short_t ne_candidatelectron = 0ns_supercluster=0
 

Definition at line 47 of file test_print.cpp.

TObjArray* preshClusters = 0
 

Definition at line 52 of file test_print.cpp.

TObjArray* superClusters = 0
 

Definition at line 51 of file test_print.cpp.

TObjArray* tracks = 0
 

Definition at line 54 of file test_print.cpp.

TObjArray* vertices = 0
 

Definition at line 55 of file test_print.cpp.


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