ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Morgan/interface/TRootSuperCluster.h
Revision: 1.6
Committed: Wed Jun 10 11:17:06 2009 UTC (15 years, 10 months ago) by lethuill
Content type: text/plain
Branch: MAIN
CVS Tags: all_2_2_9_01
Changes since 1.5: +146 -147 lines
Log Message:
Better protection against missing collection / Cleaning data format selection / Last iteration for migration to PAT of Photons

File Contents

# Content
1 #ifndef TRootSuperCluster_h
2 #define TRootSuperCluster_h
3
4 /************************************************************************************************************************************
5 SuperCluster Type: ijk
6 i = algo => 1=Island , 2=Hybrid, 3=multi5x5
7 j = detector => 1=ECAL Barrel , 2=ECAL Endcap
8 k = corrections => 0=nopreshower / uncorrected , 1=no preshower / standard CMSSW corections
9 2=preshower / standard CMSSW corections , 3= preshower / uncorrected
10
11 110 => Island Barrel SuperClusters
12 120 => Island Endcap SuperClusters
13 121 => Corrected Island Endcap SuperClusters (standard CMSSW corrections)
14 122 => Corrected Island Endcap SuperClusters with Preshower (standard CMSSW corrections)
15 210 => Hybrid Barrel SuperClusters
16 211 => Corrected Hybrid Barrel SuperClusters (standard CMSSW corrections)
17 320 => Multi5x5 Endcap SuperClusters
18 322 => Corrected Multi5x5 Endcap SuperClusters with Preshower (standard CMSSW corrections)
19 323 => Multi5x5 Endcap SuperClusters with Preshower
20
21 ************************************************************************************************************************************/
22
23 #include <string>
24 #include <iostream>
25 #include <vector>
26
27 #include "Rtypes.h"
28
29 #include "../interface/TRootCluster.h"
30
31 using namespace std;
32
33 class TRootSuperCluster : public TRootCluster
34 {
35
36 public:
37
38 TRootSuperCluster() :
39 TRootCluster()
40 ,nBasicClusters_(0)
41 ,subClusterUID_()
42 ,subClusterIndex_()
43 ,seedClusterVectorIndex_(-1)
44 ,preshowerEnergy_(0.)
45 ,rawEnergy_(0.)
46 ,seedCluster_(0)
47 ,photon_(0)
48 ,electron_(0)
49 {;}
50
51 TRootSuperCluster(const TRootSuperCluster& cluster) :
52 TRootCluster(cluster)
53 ,nBasicClusters_(cluster.nBasicClusters_)
54 ,subClusterUID_(cluster.subClusterUID_)
55 ,subClusterIndex_(cluster.subClusterIndex_)
56 ,seedClusterVectorIndex_(cluster.seedClusterVectorIndex_)
57 ,preshowerEnergy_(cluster.preshowerEnergy_)
58 ,rawEnergy_(cluster.rawEnergy_)
59 ,seedCluster_(cluster.seedCluster_)
60 ,photon_(cluster.photon_)
61 ,electron_(cluster.photon_)
62 {;}
63
64 TRootSuperCluster(Double_t energy, Double_t eta, Double_t phi) :
65 TRootCluster(energy, eta, phi)
66 ,nBasicClusters_(0)
67 ,subClusterUID_()
68 ,subClusterIndex_()
69 ,seedClusterVectorIndex_(-1)
70 ,preshowerEnergy_(0.)
71 ,rawEnergy_(0.)
72 ,seedCluster_(0)
73 ,photon_(0)
74 ,electron_(0)
75 {;}
76
77 TRootSuperCluster(Double_t energy, Double_t eta, Double_t phi, Double_t x, Double_t y, Double_t z) :
78 TRootCluster(energy, eta, phi, x, y, z)
79 ,nBasicClusters_(0)
80 ,subClusterUID_()
81 ,subClusterIndex_()
82 ,seedClusterVectorIndex_(-1)
83 ,preshowerEnergy_(0.)
84 ,rawEnergy_(0.)
85 ,seedCluster_(0)
86 ,photon_(0)
87 ,electron_(0)
88 {;}
89
90 TRootSuperCluster(Double_t energy, Double_t eta, Double_t phi, Double_t x, Double_t y, Double_t z, Int_t det) :
91 TRootCluster(energy, eta, phi, x, y, z, det)
92 ,nBasicClusters_(0)
93 ,subClusterUID_()
94 ,subClusterIndex_()
95 ,seedClusterVectorIndex_(-1)
96 ,preshowerEnergy_(0.)
97 ,rawEnergy_(0.)
98 ,seedCluster_(0)
99 ,photon_(0)
100 ,electron_(0)
101 {;}
102
103 ~TRootSuperCluster() {;}
104
105
106 Int_t nBasicClusters() const { return nBasicClusters_; }
107 std::vector<Int_t> subClusterUID() const { return subClusterUID_; }
108 std::vector<Int_t> subClusterIndex() const { return subClusterIndex_; }
109 Int_t seedIndex() const
110 {
111 if( Int_t(subClusterIndex_.size())>seedClusterVectorIndex_)
112 {
113 return subClusterIndex_.at(seedClusterVectorIndex_);
114 }
115 else
116 {
117 cout << "No seed BasicCluster in this SuperCluster...." << endl;
118 return -1;
119 }
120 }
121
122 Float_t preshowerEnergy() const { return preshowerEnergy_; }
123 Float_t rawEnergy() const { return rawEnergy_; }
124 TObject* seedCluster() const { return seedCluster_.GetObject();}
125 TObject* photon() const { return photon_.GetObject();}
126 TObject* electron() const { return electron_.GetObject();}
127 Bool_t isPhoton() const { return ( photon_.GetObject() == 0 ? false : true); }
128 Bool_t isElectron() const { return ( electron_.GetObject() == 0 ? false : true); }
129
130 void setNBasicClusters(Int_t nBasicClusters) { nBasicClusters_ = nBasicClusters; }
131 void addSubClusterUID(Int_t uid) { subClusterUID_.push_back(uid); }
132 void clearSubClusterUID() { subClusterUID_.clear(); }
133 void addSubClusterIndex(Int_t idx) { subClusterIndex_.push_back(idx); }
134 void clearSubClusterIndex() { subClusterIndex_.clear(); }
135 void setSeedClusterVectorIndex(Int_t seedClusterVectorIndex) { seedClusterVectorIndex_ = seedClusterVectorIndex; }
136 void setPreshowerEnergy(Float_t preshowerEnergy) { preshowerEnergy_ = preshowerEnergy; }
137 void setRawEnergy(Float_t rawEnergy) { rawEnergy_ = rawEnergy; }
138 void setSeedCluster(TObject* seedCluster) { seedCluster_ = seedCluster; }
139 void setPhoton(TObject* photon) { photon_ = photon; }
140 void setElectron(TObject* electron) { electron_ = electron; }
141
142
143 friend std::ostream& operator<< (std::ostream& stream, const TRootSuperCluster& clus) {
144 stream << "TRootSuperCluster - Type=" << clus.det_ << " (E,Et,eta,phi)=(" << clus.Mag() <<"," << clus.Pt() <<"," << clus.Eta() <<"," << clus.Phi() << ")"
145 << " Calo position (x,y,z)=(" << clus.calX() << "," << clus.calY() << "," << clus.calZ() << ")"
146 << " nBasicClusters=" << clus.nBasicClusters() << " e3x3=" << clus.e3x3() << " e5x5=" << clus.e5x5() << " eMax=" << clus.eMax()<< " e2nd=" << clus.e2nd()
147 << " nXtals=" << clus.nXtals() << " preshowerEnergy=" << clus.preshowerEnergy() << " rawEnergy=" << clus.rawEnergy();
148 return stream;
149 };
150
151
152 protected:
153
154 Int_t nBasicClusters_;
155 std::vector<Int_t> subClusterUID_;
156 std::vector<Int_t> subClusterIndex_;
157 Int_t seedClusterVectorIndex_; // position in subClusterIndex_ vector containing the index of the seed basic cluster in the TRootBasicCluster array
158 Float_t preshowerEnergy_;
159 Float_t rawEnergy_;
160 TRef seedCluster_;
161 TRef photon_;
162 TRef electron_;
163
164 ClassDef (TRootSuperCluster,5);
165
166 };
167
168 #endif