00001 #ifndef STAR_Pi0Event
00002 #define STAR_Pi0Event
00003
00004
00005
00006 #include "TObject.h"
00007 #include "TClonesArray.h"
00008 #include "TRefArray.h"
00009 #include "TRef.h"
00010 #include "TH1.h"
00011 #include "TMath.h"
00012 #include <vector>
00013
00014 using namespace std;
00015
00016 class TPi0Candidate : public TObject {
00017
00018 private:
00019 Float_t m_Pt;
00020 Float_t m_Mass;
00021 Float_t m_Eta;
00022 Float_t m_Phi;
00023 Float_t m_Asymmetry;
00024 Float_t m_CosAngle;
00025 Float_t m_Distance;
00026 Float_t m_TowerId1;
00027 Float_t m_TowerId2;
00028 Int_t m_ChargedAssociation1;
00029 Int_t m_ChargedAssociation2;
00030 Int_t m_SMDFlagg1;
00031 Int_t m_SMDFlagg2;
00032 Float_t m_Energy1;
00033 Float_t m_Energy2;
00034 Float_t m_TowerEnergy1;
00035 Float_t m_TowerEnergy2;
00036 Float_t m_SMDe1;
00037 Float_t m_SMDp1;
00038 Float_t m_SMDe2;
00039 Float_t m_SMDp2;
00040 Float_t m_Phi1;
00041 Float_t m_Eta1;
00042 Float_t m_Phi2;
00043 Float_t m_Eta2;
00044 Float_t m_SizeSMDe1;
00045 Float_t m_SizeSMDp1;
00046 Float_t m_SizeTower1;
00047 Float_t m_SizeSMDe2;
00048 Float_t m_SizeSMDp2;
00049 Float_t m_SizeTower2;
00050
00051 public:
00052 TPi0Candidate();
00053 TPi0Candidate(const TPi0Candidate& orig);
00054 virtual ~TPi0Candidate() {};
00055 void Clear(const Option_t* option ="") {};
00056
00057 Float_t Pt() const {return m_Pt;}
00058 Float_t Mass() const {return m_Mass;}
00059 Float_t Eta() const {return m_Eta;}
00060 Float_t Phi() const {return m_Phi;}
00061 Float_t Asymmetry() const {return m_Asymmetry;}
00062 Float_t CosAngle() const {return m_CosAngle;}
00063 Float_t Distance() const {return m_Distance;}
00064 Float_t TowerId1() const {return m_TowerId1;}
00065 Float_t TowerId2() const {return m_TowerId2;}
00066 Int_t ChargedAssociation1() const {return m_ChargedAssociation1;}
00067 Int_t ChargedAssociation2() const {return m_ChargedAssociation2;}
00068 Int_t SMDFlagg1() const {return m_SMDFlagg1;}
00069 Int_t SMDFlagg2() const {return m_SMDFlagg2;}
00070 Float_t Energy1() const {return m_Energy1;}
00071 Float_t Energy2() const {return m_Energy2;}
00072 Float_t TowerEnergy1() const {return m_TowerEnergy1;}
00073 Float_t TowerEnergy2() const {return m_TowerEnergy2;}
00074 Float_t SMDe1() const {return m_SMDe1;}
00075 Float_t SMDp1() const {return m_SMDp1;}
00076 Float_t SMDe2() const {return m_SMDe2;}
00077 Float_t SMDp2() const {return m_SMDp2;}
00078 Float_t Phi1() const {return m_Phi1;}
00079 Float_t Eta1() const {return m_Eta1;}
00080 Float_t Phi2() const {return m_Phi2;}
00081 Float_t Eta2() const {return m_Eta2;}
00082 Float_t SizeSMDe1() const {return m_SizeSMDe1;}
00083 Float_t SizeSMDp1() const {return m_SizeSMDp1;}
00084 Float_t SizeTower1() const {return m_SizeTower1;}
00085 Float_t SizeSMDe2() const {return m_SizeSMDe2;}
00086 Float_t SizeSMDp2() const {return m_SizeSMDp2;}
00087 Float_t SizeTower2() const {return m_SizeTower2;}
00088
00089 void SetAll(Float_t data[31]);
00090
00091 ClassDef(TPi0Candidate,1)
00092 };
00093
00094 class THit : public TObject {
00095 private:
00096 Float_t m_X;
00097 Float_t m_Y;
00098 Float_t m_Z;
00099 Int_t m_Id;
00100 Float_t m_Energy;
00101 Float_t m_Pt;
00102 Int_t m_NTracks;
00103 Int_t m_SMDFlag;
00104 Float_t m_EnergySMDe;
00105 Float_t m_EnergySMDp;
00106 Float_t m_EnergyTower;
00107 Float_t m_SizeSMDe;
00108 Float_t m_SizeSMDp;
00109 Float_t m_SizeTower;
00110 Float_t m_Phi;
00111 Float_t m_Eta;
00112
00113 public:
00114 THit();
00115 THit(const THit& orig);
00116 virtual ~THit() {};
00117 void Clear(const Option_t* option =""){};
00118 Float_t X() const {return m_X;}
00119 Float_t Y() const {return m_Y;}
00120 Float_t Z() const {return m_Z;}
00121 Int_t Id() const {return m_Id;}
00122 Float_t Energy() const {return m_Energy;}
00123 Float_t Pt() const {return m_Pt;}
00124 Int_t NTracks() const {return m_NTracks;}
00125 Int_t SMDFlag() const {return m_SMDFlag;}
00126 Float_t EnergySMDe() const {return m_EnergySMDe;}
00127 Float_t EnergySMDp() const {return m_EnergySMDp;}
00128 Float_t EnergyTower() const {return m_EnergyTower;}
00129 Float_t SizeSMDe() const {return m_SizeSMDe;}
00130 Float_t SizeSMDp() const {return m_SizeSMDp;}
00131 Float_t SizeTower() const {return m_SizeTower;}
00132 Float_t Phi() const {return m_Phi;}
00133 Float_t Eta() const {return m_Eta;}
00134 void SetAll(Float_t data[16]);
00135
00136 ClassDef(THit,1)
00137 };
00138
00139 class TMCPi0 : public TObject {
00140
00141 private:
00142 Float_t m_Pt;
00143 Float_t m_Eta;
00144 Float_t m_Phi;
00145 Float_t m_Energy1;
00146 Float_t m_Energy2;
00147 Float_t m_TowerId1;
00148 Float_t m_TowerId2;
00149 Float_t m_Phi1;
00150 Float_t m_Eta1;
00151 Float_t m_Phi2;
00152 Float_t m_Eta2;
00153
00154 public:
00155 TMCPi0();
00156 TMCPi0(const TMCPi0& orig);
00157 virtual ~TMCPi0() {};
00158 void Clear(const Option_t* option ="") {};
00159
00160 Float_t Pt() const {return m_Pt;}
00161 Float_t Eta() const {return m_Eta;}
00162 Float_t Phi() const {return m_Phi;}
00163 Float_t Energy1() const {return m_Energy1;}
00164 Float_t Energy2() const {return m_Energy2;}
00165 Float_t TowerId1() const {return m_TowerId1;}
00166 Float_t TowerId2() const {return m_TowerId2;}
00167 Float_t Phi1() const {return m_Phi1;}
00168 Float_t Eta1() const {return m_Eta1;}
00169 Float_t Phi2() const {return m_Phi2;}
00170 Float_t Eta2() const {return m_Eta2;}
00171
00172
00173 void SetAll(Float_t data[11]);
00174
00175 ClassDef(TMCPi0,1)
00176 };
00177
00178 class TMCEta : public TObject {
00179 private:
00180 Float_t m_Pt;
00181 Float_t m_Eta;
00182 Float_t m_Phi;
00183 Int_t m_DecayMode;
00184
00185 Float_t m_Energy1;
00186 Float_t m_Energy2;
00187 Float_t m_TowerId1;
00188 Float_t m_TowerId2;
00189 Float_t m_Phi1;
00190 Float_t m_Eta1;
00191 Float_t m_Phi2;
00192 Float_t m_Eta2;
00193
00194 Float_t m_Pi01Pt;
00195 Float_t m_Pi01Eta;
00196 Float_t m_Pi01Phi;
00197 Float_t m_Pi02Pt;
00198 Float_t m_Pi02Eta;
00199 Float_t m_Pi02Phi;
00200 Float_t m_Pi03Pt;
00201 Float_t m_Pi03Eta;
00202 Float_t m_Pi03Phi;
00203
00204 public:
00205 TMCEta();
00206 TMCEta(const TMCEta& orig);
00207 virtual ~TMCEta() {};
00208 void Clear(const Option_t* option ="") {};
00209
00210 Float_t Pt() const {return m_Pt;}
00211 Float_t Eta() const {return m_Eta;}
00212 Float_t Phi() const {return m_Phi;}
00213 Int_t DecayMode() const {return m_DecayMode;}
00214 Float_t Energy1() const {return m_Energy1;}
00215 Float_t Energy2() const {return m_Energy2;}
00216 Float_t TowerId1() const {return m_TowerId1;}
00217 Float_t TowerId2() const {return m_TowerId2;}
00218 Float_t Phi1() const {return m_Phi1;}
00219 Float_t Eta1() const {return m_Eta1;}
00220 Float_t Phi2() const {return m_Phi2;}
00221 Float_t Eta2() const {return m_Eta2;}
00222 Float_t Pi01Pt() const {return m_Pi01Pt;}
00223 Float_t Pi01Eta() const {return m_Pi01Eta;}
00224 Float_t Pi01Phi() const {return m_Pi01Phi;}
00225 Float_t Pi02Pt() const {return m_Pi01Pt;}
00226 Float_t Pi02Eta() const {return m_Pi01Eta;}
00227 Float_t Pi02Phi() const {return m_Pi01Phi;}
00228 Float_t Pi03Pt() const {return m_Pi01Pt;}
00229 Float_t Pi03Eta() const {return m_Pi01Eta;}
00230 Float_t Pi03Phi() const {return m_Pi01Phi;}
00231
00232
00233 void SetAll(Float_t data[21]);
00234
00235 ClassDef(TMCEta,1)
00236 };
00237
00238
00239 class TPi0Event : public TObject {
00240
00241 private:
00242 Int_t m_EventNo;
00243 Int_t m_RunNo;
00244 Int_t m_FillNo;
00245 Float_t m_VertexX;
00246 Float_t m_VertexY;
00247 Float_t m_VertexZ;
00248 Int_t m_IsMB;
00249 Int_t m_IsHTTPF;
00250 Int_t m_IsHTTPL2;
00251 Int_t m_IsHTTPL2_Test;
00252 Int_t m_IsHT2;
00253 Int_t m_IsJP1;
00254 Int_t m_HiTowerAdc6Bit;
00255 Int_t m_BEMCPoints;
00256 Float_t m_ChargedPtSum;
00257 Float_t m_NeutralEnergy;
00258 Int_t m_PrescaleMB;
00259 Int_t m_PrescaleHTTPF;
00260 Int_t m_PrescaleHTTPL2;
00261 Int_t m_PrescaleHTTPL2_Test;
00262 Int_t m_PrescaleHT2;
00263 Int_t m_PrescaleJP1;
00264 Int_t m_BBCTrig;
00265 Float_t m_MCVertexZ;
00266 Int_t m_Accept;
00267 Int_t m_IsSimu;
00268 Int_t m_NPi0Candidates;
00269 Int_t m_NMCPi0s;
00270 Int_t m_NMCEtas;
00271 Int_t m_TriggerTower;
00272 Float_t m_HighestPi0MCPt;
00273 Int_t m_BunchX48;
00274 Int_t m_BunchX7;
00275 Int_t m_SpinBit4;
00276 Int_t m_MaskedXing;
00277 Int_t m_ValidSpin;
00278 Int_t m_PolLong;
00279 Int_t m_DbSpinBit;
00280 Float_t m_relLum[3];
00281 Float_t m_lumErr[3];
00282 Int_t m_NHits;
00283 Float_t m_BBCVertexZ;
00284 Int_t m_OnlyBBCVtx;
00285
00286 Float_t m_PythiaPartPt;
00287 Float_t m_PythiaX1;
00288 Float_t m_PythiaX2;
00289 Float_t m_BBCTimeBin;
00290 Int_t m_isBackground;
00291 vector <int> m_BackgroundTowers;
00292
00293
00294
00295 TClonesArray *m_Pi0Candidates;
00296 TClonesArray *m_MCPi0s;
00297 TClonesArray *m_MCEtas;
00298 TClonesArray *m_Hits;
00299 static TClonesArray *aPi0Candidates;
00300 static TClonesArray *aMCPi0s;
00301 static TClonesArray *aMCEtas;
00302 static TClonesArray *aHits;
00303
00304 public:
00305 TPi0Event();
00306 virtual ~TPi0Event();
00307 void Clear(const Option_t* option ="");
00308 static void Reset(Option_t *option ="");
00309
00310 Int_t EventNo() const {return m_EventNo;}
00311 Int_t RunNo() const {return m_RunNo;}
00312 Int_t FillNo() const {return m_FillNo;}
00313 Float_t VertexX() const {return m_VertexX;}
00314 Float_t VertexY() const {return m_VertexY;}
00315 Float_t VertexZ() const {return m_VertexZ;}
00316 Int_t IsMB() const {return m_IsMB;}
00317 Int_t IsHTTPF() const {return m_IsHTTPF;}
00318 Int_t IsHTTPL2() const {return m_IsHTTPL2;}
00319 Int_t IsHTTPL2_Test() const {return m_IsHTTPL2_Test;}
00320 Int_t IsHT2() const {return m_IsHT2;}
00321 Int_t IsJP1() const {return m_IsJP1;}
00322 Int_t HiTowerAdc6Bit() const {return m_HiTowerAdc6Bit;}
00323 Int_t BEMCPoints() const {return m_BEMCPoints;}
00324 Float_t ChargedPtSum() const {return m_ChargedPtSum;}
00325 Float_t NeutralEnergy() const {return m_NeutralEnergy;}
00326 Int_t PrescaleMB() const {return m_PrescaleMB;}
00327 Int_t PrescaleHTTPF() const {return m_PrescaleHTTPF;}
00328 Int_t PrescaleHTTPL2() const {return m_PrescaleHTTPL2;}
00329 Int_t PrescaleHTTPL2_Test() const {return m_PrescaleHTTPL2_Test;}
00330 Int_t PrescaleHT2() const {return m_PrescaleHT2;}
00331 Int_t PrescaleJP1() const {return m_PrescaleJP1;}
00332 Int_t BBCTrig() const {return m_BBCTrig;}
00333 Int_t IsSimulation() const {return m_IsSimu;}
00334 Float_t MCVertexZ() const {return m_MCVertexZ;}
00335 Int_t IsAccepted() const {return m_Accept;}
00336 Int_t NPi0Candidates() const {return m_NPi0Candidates;}
00337 Int_t NMCPi0s() const {return m_NMCPi0s;}
00338 Int_t NMCEtas() const {return m_NMCEtas;}
00339 Int_t TriggerTower() const {return m_TriggerTower;}
00340 Float_t HighestPi0MCPt() const {return m_HighestPi0MCPt;}
00341 Int_t BunchX48() const {return m_BunchX48;}
00342 Int_t BunchX7() const {return m_BunchX7;}
00343 Int_t SpinBit() const {return m_SpinBit4;}
00344 Int_t MaskedXing() const {return m_MaskedXing;}
00345 Int_t ValidSpin() const {return m_ValidSpin;}
00346 Int_t PolLong() const {return m_PolLong;}
00347 Int_t DbSpinBit() const {return m_DbSpinBit;}
00348 Float_t RelLumUpUp() const {return m_relLum[0];}
00349 Float_t LumErrorUpUp() const {return m_lumErr[0];}
00350 Float_t RelLumUpDown() const {return m_relLum[1];}
00351 Float_t LumErrorUpDown() const {return m_lumErr[1];}
00352 Float_t RelLumDownUp() const {return m_relLum[2];}
00353 Float_t LumErrorDownUp() const {return m_lumErr[2];}
00354 Int_t NHits() const {return m_NHits;}
00355 Float_t BBCVertexZ() const {return m_BBCVertexZ;}
00356 Int_t OnlyBBCVertex() const {return m_OnlyBBCVtx;}
00357 Float_t PythiaPartPt() const {return m_PythiaPartPt;}
00358 Float_t PythiaX1() const {return m_PythiaX1;}
00359 Float_t PythiaX2() const {return m_PythiaX2;}
00360 Float_t BBCTimeBin() const {return m_BBCTimeBin;}
00361 Int_t IsBackground() const {return m_isBackground;}
00362 int NumberOfBackgroundTowers() const {return m_BackgroundTowers.size();}
00363 int BackgroundTower(int i) const {return m_BackgroundTowers.at(i);}
00364 TClonesArray* Pi0Candidates() const {return m_Pi0Candidates;}
00365 TPi0Candidate* Pi0Candidate(Int_t i) {return (TPi0Candidate*)m_Pi0Candidates->At(i);}
00366 TClonesArray* MCPi0s() const {return m_MCPi0s;}
00367 TMCPi0* MCPi0(Int_t i) {return (TMCPi0*)m_MCPi0s->At(i);}
00368 TClonesArray* MCEtas() const {return m_MCEtas;}
00369 TMCEta* MCEta(Int_t i) {return (TMCEta*)m_MCEtas->At(i);}
00370 TClonesArray* Hits() const {return m_Hits;}
00371 THit* Hit(Int_t i) {return (THit*)m_Hits->At(i);}
00372
00373
00374
00375 void SetEventNo(Int_t evN) {m_EventNo = evN;}
00376 void SetRunNo(Int_t rN) {m_RunNo = rN;}
00377 void SetFillNo(Int_t fN) {m_FillNo = fN;}
00378 void SetVertex(Float_t vx, Float_t vy, Float_t vz) {m_VertexX = vx; m_VertexY = vy; m_VertexZ = vz;}
00379 void SetTriggers(Int_t tr[6]) {m_IsMB = tr[0]; m_IsHTTPF = tr[1]; m_IsHTTPL2 = tr[2]; m_IsHT2 = tr[3]; m_IsJP1 = tr[4]; m_IsHTTPL2_Test = tr[5];}
00380 void SetPrescales(Int_t pr[6]) {m_PrescaleMB = pr[0]; m_PrescaleHTTPF = pr[1]; m_PrescaleHTTPL2 = pr[2]; m_PrescaleHT2 = pr[3]; m_PrescaleJP1 = pr[4]; m_PrescaleHTTPL2_Test = pr[5];}
00381 void SetHiTowerAdc6Bit(Int_t ht) {m_HiTowerAdc6Bit = ht;}
00382 void SetBEMCPoints(Int_t points) {m_BEMCPoints = points;}
00383 void SetChargedPtSum(Float_t sum) {m_ChargedPtSum = sum;}
00384 void SetNeutralEnergy(Float_t en) {m_NeutralEnergy = en;}
00385 void SetBBCTrig(Int_t bt) {m_BBCTrig = bt;}
00386 void SetSimulation(Int_t sim) {m_IsSimu = sim;}
00387 void SetMCVertexZ(Float_t mz) {m_MCVertexZ = mz;}
00388 void Accept(Int_t ac = 1) {m_Accept = ac;}
00389 void SetTriggerTower(Int_t tow) {m_TriggerTower = tow;}
00390 void SeHighestPi0MCPt(Float_t pt) {m_HighestPi0MCPt = pt;}
00391 void SetBunchX48(Int_t b48) {m_BunchX48 = b48;}
00392 void SetBunchX7(Int_t b7) {m_BunchX7 = b7;}
00393 void SetSpinBit(Int_t sb) {m_SpinBit4 = sb;}
00394 void SetMaskedXing(Int_t mask) {m_MaskedXing = mask;}
00395 void SetValidSpin(Int_t val) {m_ValidSpin = val;}
00396 void SetPolLong(Int_t pol) {m_PolLong = pol;}
00397 void SetDbSpinBit(Int_t sb) {m_DbSpinBit = sb;}
00398 void SetRelLum(Float_t l[3]) {m_relLum[0] = l[0];m_relLum[1] = l[1];m_relLum[2] = l[2];}
00399 void SetLumError(Float_t e[3]) {m_lumErr[0] = e[0];m_lumErr[1] = e[1];m_lumErr[2] = e[2];}
00400 void SetBBCVertexZ(Float_t vtxz) {m_BBCVertexZ = vtxz;}
00401 void SetOnlyBBCVertex(Int_t flag = 1) {m_OnlyBBCVtx = flag;}
00402 void SetPythiaPartPt(Float_t part) {m_PythiaPartPt = part;}
00403 void SetPythiaX1(Float_t x) {m_PythiaX1 = x;}
00404 void SetPythiaX2(Float_t x) {m_PythiaX2 = x;}
00405 void SetBBCTimeBin(Float_t bin) {m_BBCTimeBin = bin;}
00406 void SetBackground(int bgd) {m_isBackground = bgd;}
00407 void AddBackgroundTower(int tow) {m_BackgroundTowers.push_back(tow);}
00408 TPi0Candidate* AddPi0Candidate(TPi0Candidate& cand);
00409 TMCPi0* AddMCPi0(TMCPi0& cand);
00410 TMCEta* AddMCEta(TMCEta& cand);
00411 THit* AddHit(THit& cand);
00412
00413 ClassDef(TPi0Event,3)
00414 };
00415 #endif
00416