#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 |
|
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 } |
|
Definition at line 49 of file test_print.cpp. |
|
Definition at line 56 of file test_print.cpp. |
|
Definition at line 57 of file test_print.cpp. |
|
Definition at line 48 of file test_print.cpp. |
|
Definition at line 50 of file test_print.cpp. |
|
Definition at line 53 of file test_print.cpp. |
|
Definition at line 58 of file test_print.cpp. |
|
Definition at line 47 of file test_print.cpp. |
|
Definition at line 52 of file test_print.cpp. |
|
Definition at line 51 of file test_print.cpp. |
|
Definition at line 54 of file test_print.cpp. |
|
Definition at line 55 of file test_print.cpp. |