ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/CaloTau.h
Revision: 1.6
Committed: Sat May 5 16:49:09 2012 UTC (13 years ago) by paus
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_028, Mit_027a, Mit_027, HEAD
Changes since 1.5: +3 -3 lines
Log Message:
Version 027 - complete version for ICHEP 2012.

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: CaloTau.h,v 1.5 2012/03/29 23:41:54 paus Exp $
3 //
4 // CaloTau
5 //
6 // This class holds information about reconstructed Taus based on calorimeter towers, ecal basic
7 // clusters, and tracks.
8 //
9 // Authors: J.Bendavid
10 //--------------------------------------------------------------------------------------------------
11
12 #ifndef MITANA_DATATREE_CALOTAU_H
13 #define MITANA_DATATREE_CALOTAU_H
14
15 #include "MitAna/DataTree/interface/Tau.h"
16 #include "MitAna/DataCont/interface/RefArray.h"
17 #include "MitAna/DataCont/interface/Ref.h"
18 #include "MitAna/DataTree/interface/Track.h"
19 #include "MitAna/DataTree/interface/BasicCluster.h"
20 #include "MitAna/DataTree/interface/CaloJet.h"
21
22 namespace mithep
23 {
24 class CaloTau : public Tau
25 {
26 public:
27 CaloTau() : fLeadTrackSignD0Sig(0), fLeadTrack3x3HCalEt(0),
28 fLeadTrack3x3HCalDEta(0), fSignalTracksMass(0),
29 fTracksMass(0), fIsoTrackPtSum(0), fIsoECalEtSum(0),
30 fMaxHCalHitEt(0) {}
31 CaloTau(Double_t px, Double_t py, Double_t pz, Double_t e) :
32 Tau(px,py,pz,e),
33 fLeadTrackSignD0Sig(0), fLeadTrack3x3HCalEt(0),
34 fLeadTrack3x3HCalDEta(0), fSignalTracksMass(0),
35 fTracksMass(0), fIsoTrackPtSum(0), fIsoECalEtSum(0),
36 fMaxHCalHitEt(0) {}
37
38 void AddIsoTrack(const Track *t) { fIsoTracks.Add(t); }
39 void AddNeutralBC(const BasicCluster *c) { fNeutralBCs.Add(c); }
40 void AddSignalTrack(const Track *t)
41 { ClearCharge(); fSignalTracks.Add(t); }
42 Double_t IsoECalEtSum() const { return fIsoECalEtSum; }
43 const Track *IsoTrack(UInt_t i) const { return fIsoTracks.At(i); }
44 Double_t IsoTrackPtSum() const { return fIsoTrackPtSum; }
45 const Track *LeadTrack() const { return fLeadTrack.Obj(); }
46 Double_t LeadTrack3x3HCalEt() const { return fLeadTrack3x3HCalEt; }
47 Double_t LeadTrack3x3HCalDEta() const { return fLeadTrack3x3HCalDEta; }
48 Double_t LeadTrackSignedD0Sig() const { return fLeadTrackSignD0Sig; }
49 Double_t MaxHCalHitEt() const { return fMaxHCalHitEt; }
50 UInt_t NIsoTracks() const { return fIsoTracks.Entries(); }
51 const BasicCluster *NeutralBC(UInt_t i) const { return fNeutralBCs.At(i); }
52 UInt_t NNeutralBCs() const { return fNeutralBCs.Entries(); }
53 UInt_t NSignalTracks() const { return fSignalTracks.Entries(); }
54 EObjType ObjType() const { return kCaloTau; }
55 void SetCaloJet(const CaloJet *j) { fCaloJet = j; }
56 void SetIsoECalEtSum(Double_t x) { fIsoECalEtSum = x; }
57 void SetIsoTrackPtSum(Double_t x) { fIsoTrackPtSum = x; }
58 void SetLeadTrack(const Track *t) { fLeadTrack = t; }
59 void SetLeadTrack3x3HCalDEta(Double_t x) { fLeadTrack3x3HCalDEta = x; }
60 void SetLeadTrack3x3HCalEt(Double_t x) { fLeadTrack3x3HCalEt = x; }
61 void SetLeadTrackSignD0Sig(Double_t x) { fLeadTrackSignD0Sig = x; }
62 void SetMaxHCalHitEt(Double_t x) { fMaxHCalHitEt = x; }
63 void SetSignalTracksMass(Double_t x) { fSignalTracksMass = x; }
64 void SetTracksMass(Double_t x) { fTracksMass = x; }
65 const Track *SignalTrack(UInt_t i) const { return fSignalTracks.At(i); }
66 Double_t SignalTracksMass() const { return fSignalTracksMass; }
67 const CaloJet *SourceCaloJet() const { return fCaloJet.Obj(); }
68 const Jet *SourceJet() const { return SourceCaloJet(); }
69 Double_t TracksMass() const { return fTracksMass; }
70
71 // Some structural tools
72 void Mark(UInt_t i = 1) const;
73
74 protected:
75 Double_t GetCharge() const;
76
77 Double32_t fLeadTrackSignD0Sig; //[0,0,14]signed leading track D0 significance
78 Double32_t fLeadTrack3x3HCalEt; //[0,0,14]hcal 3x3 calo tower et around lead trk
79 Double32_t fLeadTrack3x3HCalDEta; //[0,0,14]abs(delta eta) between lead track
80 // and hottest hcal rec hit in 3x3 region
81 Double32_t fSignalTracksMass; //[0,0,14]invariant mass of signal tracks
82 Double32_t fTracksMass; //[0,0,14]invariant mass of signal + iso tracks
83 Double32_t fIsoTrackPtSum; //[0,0,14]sum pt of tracks in isolation annulus
84 Double32_t fIsoECalEtSum; //[0,0,14]sum et of ecal rechits in iso annulus
85 Double32_t fMaxHCalHitEt; //[0,0,14]et of largest et hcal rechit
86 Ref<Track> fLeadTrack; //leading track in signal cone
87 Ref<CaloJet> fCaloJet; //original reconstructed calo jet
88 RefArray<Track> fSignalTracks; //tracks in signal cone
89 RefArray<Track> fIsoTracks; //tracks in isolation annulus
90 RefArray<BasicCluster> fNeutralBCs; //neutral Ecal basic clusters
91
92 ClassDef(CaloTau, 1) // CaloTau class
93 };
94 }
95
96 //--------------------------------------------------------------------------------------------------
97 inline void mithep::CaloTau::Mark(UInt_t ib) const
98 {
99 // mark myself
100 mithep::DataObject::Mark(ib);
101 // mark my dependencies if they are there
102 if (fLeadTrack.IsValid())
103 fLeadTrack.Obj()->Mark(ib);
104 if (fCaloJet.IsValid())
105 fCaloJet.Obj()->Mark(ib);
106 // arrays
107 fSignalTracks.Mark(ib);
108 fIsoTracks .Mark(ib);
109 fNeutralBCs .Mark(ib);
110 }
111
112 //--------------------------------------------------------------------------------------------------
113 inline Double_t mithep::CaloTau::GetCharge() const
114 {
115 // Get charge from signal tracks.
116
117 Double_t sumq = 0;
118 for (UInt_t i=0; i<fSignalTracks.Entries(); ++i) {
119 sumq += fSignalTracks.At(i)->Charge();
120 }
121 return sumq;
122 }
123 #endif