2 |
|
|
3 |
|
#include "MitAna/DataTree/interface/Electron.h" |
4 |
|
|
5 |
– |
Double_t mithep::Electron::ComputeTrackIsolation( Double_t extRadius, Double_t intRadius, |
6 |
– |
Double_t ptLow, Double_t maxVtxZDist, Collection<Track> *tracks) { |
7 |
– |
|
8 |
– |
//Computes the Track Isolation: Summed Transverse Momentum of all tracks inside an |
9 |
– |
//annulus around the electron seed track. |
10 |
– |
|
11 |
– |
int counter; |
12 |
– |
double ptSum =0.; |
13 |
– |
|
14 |
– |
const Track *electronTrack = this->Trk() ; |
15 |
– |
ThreeVector *electronTrackMomentum = new ThreeVector(electronTrack->Mom().X(),electronTrack->Mom().Y(),electronTrack->Mom().Z()); |
16 |
– |
|
17 |
– |
for (UInt_t i=0; i<tracks->GetEntries();i++) { |
18 |
– |
ThreeVector *tmpTrackMomentum = new ThreeVector(tracks->At(i)->Mom().X(),tracks->At(i)->Mom().Y(),tracks->At(i)->Mom().Z()); |
19 |
– |
double tmpPt = tracks->At(i)->Pt(); |
20 |
– |
double deltaZ = fabs(electronTrack->Z0() - tracks->At(i)->Z0()); |
21 |
– |
|
22 |
– |
//ignore the track if it is below the pt threshold |
23 |
– |
if (tmpPt < ptLow) |
24 |
– |
continue; |
25 |
– |
//ingore the track if it is too far away in Z |
26 |
– |
if (deltaZ > maxVtxZDist) |
27 |
– |
continue; |
28 |
– |
|
29 |
– |
double dphi = (fabs(tmpTrackMomentum->Phi() - electronTrackMomentum->Phi()) > TMath::Pi())?(fabs(tmpTrackMomentum->Phi() - electronTrackMomentum->Phi()) - 2*TMath::Pi()):(fabs(tmpTrackMomentum->Phi() - electronTrackMomentum->Phi())); |
30 |
– |
double deta = fabs(tmpTrackMomentum->Eta() - electronTrackMomentum->Eta()); |
31 |
– |
double dr = TMath::Sqrt(dphi*dphi + deta*deta); |
32 |
– |
|
33 |
– |
//add the track pt if it is inside the annulus |
34 |
– |
if ( dr < extRadius && |
35 |
– |
dr >= intRadius ) { |
36 |
– |
++counter ; |
37 |
– |
ptSum += tmpPt; |
38 |
– |
} |
39 |
– |
} |
40 |
– |
return ptSum; |
41 |
– |
} |
42 |
– |
|
43 |
– |
Double_t mithep::Electron::ComputeEcalIsolation( Double_t coneSize, Double_t etLow, Collection<BasicCluster> *basicClusters) { |
44 |
– |
|
45 |
– |
//Computes the Ecal Isolation: Summed Transverse Energy of all Basic Clusters inside a |
46 |
– |
//cone around the electron, excluding those that are inside the electron super cluster. |
47 |
– |
|
48 |
– |
double ecalIsol=0.; |
49 |
– |
ThreeVector *SClusterPosition = new ThreeVector (this->SCluster()->X(),this->SCluster()->Y(),this->SCluster()->Z()); |
50 |
– |
|
51 |
– |
const BasicCluster *basicCluster= 0; |
52 |
– |
for (UInt_t i=0; i<basicClusters->GetEntries();i++) { |
53 |
– |
basicCluster = basicClusters->At(i); |
54 |
– |
double basicClusterChi2 = basicCluster->ChiSq(); |
55 |
– |
double basicClusterEnergy = basicCluster->Energy(); |
56 |
– |
double basicClusterEta = basicCluster->Eta(); |
57 |
– |
double basicClusterEt = basicClusterEnergy*sin(2*atan(exp(basicClusterEta))); |
58 |
– |
|
59 |
– |
if (basicClusterEt > etLow && basicClusterChi2 < 30.) { |
60 |
– |
bool inSuperCluster = false; |
61 |
– |
|
62 |
– |
// loop over the basic clusters of the supercluster |
63 |
– |
// to make sure that the basic cluster is not inside |
64 |
– |
// the super cluster. We exclude those. |
65 |
– |
for (UInt_t j=0; j<this->SCluster()->ClusterSize(); j++) { |
66 |
– |
const BasicCluster *tempBasicClusterInSuperCluster = this->SCluster()->Cluster(j); |
67 |
– |
if (tempBasicClusterInSuperCluster == basicCluster) { |
68 |
– |
inSuperCluster = true; |
69 |
– |
} |
70 |
– |
} |
71 |
– |
|
72 |
– |
if (!inSuperCluster) { |
73 |
– |
ThreeVector *basicClusterPosition = new ThreeVector(basicCluster->X(), |
74 |
– |
basicCluster->Y(), |
75 |
– |
basicCluster->Z()); |
76 |
– |
double dphi = (fabs(SClusterPosition->Phi() - basicClusterPosition->Phi()) > TMath::Pi())?(fabs(SClusterPosition->Phi() - basicClusterPosition->Phi()) - 2*TMath::Pi()):(fabs(SClusterPosition->Phi() - basicClusterPosition->Phi())); |
77 |
– |
double deta = fabs(SClusterPosition->Eta() - basicClusterPosition->Eta()); |
78 |
– |
double dr = TMath::Sqrt(dphi*dphi + deta*deta); |
79 |
– |
if(dr < coneSize) { |
80 |
– |
ecalIsol += basicClusterEt; |
81 |
– |
} |
82 |
– |
} |
83 |
– |
} |
84 |
– |
} |
85 |
– |
return ecalIsol; |
86 |
– |
} |
87 |
– |
|
5 |
|
ClassImp(mithep::Electron) |
6 |
|
|
7 |
|
|