Fork me on GitHub

source: svn/trunk/Utilities/ExRootAnalysis/src/BlockClasses.cc@ 266

Last change on this file since 266 was 264, checked in by Xavier Rouby, 16 years ago

first test 2.0

File size: 5.3 KB
Line 
1/** \class BlockClasses
2 *
3 * Initialization of static fgCompare functions. At the moment a number of
4 * functions TCompare*** are implemented (see BlockCompare.h).
5 * Function TCompareXX sorts objects
6 * by the variable "XX" that MUST be present in the data members of the
7 * Block TRoot class.
8 * By default most objects are sorted by PT or ET.
9 * Only calorimeter cells and basic cluster are sorted by E
10 * TRootGenParticle particle is not sorted by default
11 * to preserve mother-dautherlinks between particles.
12 *
13 * $Date: 2009-02-11 09:19:14 $
14 * $Revision: 1.8 $
15 *
16 *
17 * \author S. Ovyn - UCL, Louvain-la-Neuve
18 *
19 */
20
21#include "BlockClasses.h"
22#include "BlockCompare.h"
23#include "TLorentzVector.h"
24#include <cmath>
25
26TCompare *TRootGenParticle::fgCompare = 0;
27TCompare *TRootJet::fgCompare = TComparePT<TRootJet>::Instance();
28TCompare *TRootElectron::fgCompare = TComparePT<TRootElectron>::Instance();
29TCompare *TRootMuon::fgCompare = TComparePT<TRootMuon>::Instance();
30TCompare *TRootPhoton::fgCompare = TComparePT<TRootPhoton>::Instance();
31TCompare *TRootTauJet::fgCompare = TComparePT<TRootTauJet>::Instance();
32TCompare *TRootTracks::fgCompare = TComparePT<TRootTracks>::Instance();
33TCompare *TRootETmis::fgCompare = 0;
34TCompare *TRootCalo::fgCompare = 0;
35TCompare *TRootZdcHits::fgCompare = 0;
36TCompare *TRootGenEvent:: fgCompare = 0;
37TCompare *TRootParticle::fgCompare=0;
38TCompare *TRootLHEFParticle::fgCompare = 0;
39TCompare *TRootRomanPotHits::fgCompare =0;
40TCompare *TRootTrigger::fgCompare =0;
41//TCompare *D_CaloTower::fgCompare=0;
42TCompare *D_Track::fgCompare=0;
43
44void TRootParticle::Set(const TLorentzVector& momentum) {
45 E = momentum.E();
46 Px = momentum.Px();
47 Py = momentum.Py();
48 Pz = momentum.Pz();
49 PT = momentum.Pt();
50 Eta = momentum.Eta();
51 Phi = momentum.Phi();
52}
53
54void TRootParticle::Set(const float px, const float py, const float pz, const float e) {
55 TLorentzVector toFill;
56 toFill.SetPxPyPzE(px,py,pz,e);
57 E = e;
58 Px = px;
59 Py = py;
60 Pz = pz;
61 PT = toFill.Pt();
62 Eta = toFill.Eta();
63 Phi = toFill.Phi();
64}
65
66void TRootParticle::SetEtaPhiEET(const float eta, const float phi, const float e, const float et) {
67 Eta = eta; Phi = phi; E = e; PT = et;
68 //float theta = 2* atan(exp(-Eta);
69 Px = PT*cos(Phi);
70 Py = PT*sin(Phi);
71}
72
73
74void TRootGenParticle::setFractions() {
75 switch(abs(PID)) {
76 default: _Fem = 0; _Fhad=1; break;
77 case(pE):
78 case(pGAMMA):
79 case(pPI0):
80 _Fem = 1; _Fhad=0; break;
81 case(pNU1):
82 case(pNU2):
83 case(pNU3):
84 case(pMU):
85 _Fem =0; _Fhad=0; break;
86 case(pK0S):
87 case(pLAMBDA):
88 _Fem=0.3; _Fhad=0.7; break;
89 }
90 _initialised=true;
91}
92
93 float Eta, Phi; // (eta,phi) at the beginning of the track
94 float EtaOuter, PhiOuter; // (eta,phi) at the end of the track
95 float PT, E, Px, Py, Pz;
96
97D_Track::D_Track() :
98 Eta(UNDEFINED), Phi(UNDEFINED), EtaOuter(UNDEFINED), PhiOuter(UNDEFINED),
99 PT(UNDEFINED), E(UNDEFINED), Px(UNDEFINED), Py(UNDEFINED), Pz(UNDEFINED) {}
100
101D_Track::D_Track(const float inEta, const float inPhi, const float outEta, const float outPhi, const float pt) :
102 Eta(inEta), Phi(inPhi), EtaOuter(outEta), PhiOuter(outPhi),
103 PT(pt) {
104 TLorentzVector p; p.SetPtEtaPhiE(PT,Eta,Phi,PT*cosh(Eta));
105 Px = p.Px(); Py = p.Py(); Pz = p.Pz(); E=p.E();
106}
107
108D_Track::D_Track(const D_Track& track) :
109 Eta(track.Eta), Phi(track.Phi),
110 EtaOuter(track.EtaOuter), PhiOuter(track.PhiOuter),
111 PT(track.PT), E(track.E), Px(track.Px), Py(track.Py), Pz(track.Pz) {}
112
113D_Track& D_Track::operator=(const D_Track& track) {
114 if(this == &track) return *this;
115 Eta = track.Eta; Phi = track.Phi;
116 EtaOuter = track.EtaOuter; PhiOuter = track.PhiOuter;
117 PT = track.PT; E = track.E; Px = track.Px; Py= track.Py; Pz =track.Pz;
118 return *this;
119}
120
121void D_Track::Set(const float inEta, const float inPhi, const float outEta, const float outPhi, const float pt) {
122 Eta= inEta; Phi=inPhi; EtaOuter=outEta; PhiOuter=outPhi; PT=pt;
123 TLorentzVector p; p.SetPtEtaPhiE(PT,Eta,Phi,PT*cosh(Eta));
124 Px = p.Px(); Py = p.Py(); Pz = p.Pz(); E=p.E();
125}
126
127const TLorentzVector D_Track::GetFourVector() const {
128 TLorentzVector v;
129 v.SetPtEtaPhiE(PT,Eta,Phi,PT*cosh(Eta));
130 return TLorentzVector(v);
131}
132
133TRootCalo::TRootCalo() :
134 E_em(UNDEFINED), E_had(UNDEFINED), ET(UNDEFINED) {}
135 //Eta(UNDEFINED), Phi(UNDEFINED), E_em(UNDEFINED), E_had(UNDEFINED), E(UNDEFINED), ET(UNDEFINED) {}
136
137TRootCalo::TRootCalo(const TRootCalo& cal) {
138 E_em=cal.E_em; E_had=cal.E_had; ET=cal.ET;
139 //Eta =cal.Eta; Phi=cal.Phi; E_em=cal.E_em; E_had=cal.E_had; E=cal.E; ET=cal.ET;
140}
141
142TRootCalo& TRootCalo::operator=(const TRootCalo& cal) {
143 if(this==&cal) return *this;
144 Eta =cal.Eta; Phi=cal.Phi; E_em=cal.E_em; E_had=cal.E_had; E=cal.E; ET=cal.ET;
145 return *this;
146}
147
148void TRootCalo::set(const D_CaloTower& cal) {
149 Eta =cal.getEta(); Phi=cal.getPhi();
150 E_em=cal.getEem(); E_had=cal.getEhad();
151 E =cal.getE(); ET =cal.getET();
152 EtaCalo = cal.getEta();
153 PhiCalo = cal.getPhi();
154}
155
156
157TRootTracks::TRootTracks(const D_Track& track) :
158 E(track.getE()), Px(track.getPx()), Py(track.getPy()), Pz(track.getPz()),
159 Eta(track.getEta()), Phi(track.getPhi()),
160 /*Etaout(track.getEtaOuter()),*/ EtaCalo(track.getEtaOuter()), /*Phiout(track.getPhiOuter()),*/ PhiCalo(track.getPhiOuter()) {}
161
Note: See TracBrowser for help on using the repository browser.