Line data Source code
1 : // -*- mode: C++ -*-
2 : #ifndef ALIESDZDC_H
3 : #define ALIESDZDC_H
4 :
5 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 : * See cxx source for full Copyright notice */
7 :
8 : //-------------------------------------------------------------------------
9 : // Implementation of Class AliESDZDC
10 : // This is a class that summarizes the ZDC data for the ESD
11 : // Origin: Christian Klein-Boesing, CERN, Christian.Klein-Boesing@cern.ch
12 : // *** 15/10/2009 Scaler added to AliESDZDC class ***
13 : // *** Scaler format: 32 floats from VME scaler ***
14 : //-------------------------------------------------------------------------
15 :
16 : #include <AliVZDC.h>
17 :
18 72 : class AliESDZDC: public AliVZDC {
19 : public:
20 :
21 : AliESDZDC();
22 : AliESDZDC(const AliESDZDC& zdc);
23 : AliESDZDC& operator=(const AliESDZDC& zdc);
24 :
25 :
26 : // Getters
27 :
28 32 : virtual Short_t GetZDCParticipants() const {return fZDCParticipants;}
29 16 : virtual Short_t GetZDCPartSideA() const {return fZDCPartSideA;}
30 16 : virtual Short_t GetZDCPartSideC() const {return fZDCPartSideC;}
31 16 : virtual Double_t GetImpactParameter() const {return fImpactParameter;}
32 16 : virtual Double_t GetImpactParamSideA() const {return fImpactParamSideA;}
33 16 : virtual Double_t GetImpactParamSideC() const {return fImpactParamSideC;}
34 :
35 0 : virtual Double_t GetZNCEnergy() const {return (Double_t) fZDCN1Energy;}
36 0 : virtual Double_t GetZPCEnergy() const {return (Double_t) fZDCP1Energy;}
37 0 : virtual Double_t GetZNAEnergy() const {return (Double_t) fZDCN2Energy;}
38 0 : virtual Double_t GetZPAEnergy() const {return (Double_t) fZDCP2Energy;}
39 16 : virtual Double_t GetZEM1Energy() const {return (Double_t) fZDCEMEnergy;}
40 16 : virtual Double_t GetZEM2Energy() const {return (Double_t) fZDCEMEnergy1;}
41 :
42 16 : virtual const Double_t *GetZNCTowerEnergy() const {return fZN1TowerEnergy;}
43 16 : virtual const Double_t *GetZNATowerEnergy() const {return fZN2TowerEnergy;}
44 16 : virtual const Double_t *GetZPCTowerEnergy() const {return fZP1TowerEnergy;}
45 16 : virtual const Double_t *GetZPATowerEnergy() const {return fZP2TowerEnergy;}
46 16 : virtual const Double_t *GetZNCTowerEnergyLR() const {return fZN1TowerEnergyLR;}
47 16 : virtual const Double_t *GetZNATowerEnergyLR() const {return fZN2TowerEnergyLR;}
48 16 : const Double_t *GetZPCTowerEnergyLR() const {return fZP1TowerEnergyLR;}
49 16 : const Double_t *GetZPATowerEnergyLR() const {return fZP2TowerEnergyLR;}
50 :
51 0 : UInt_t GetESDQuality() const {return fESDQuality;}
52 32 : Double_t GetZDCN1Energy() const {return fZDCN1Energy;}
53 32 : Double_t GetZDCP1Energy() const {return fZDCP1Energy;}
54 32 : Double_t GetZDCN2Energy() const {return fZDCN2Energy;}
55 32 : Double_t GetZDCP2Energy() const {return fZDCP2Energy;}
56 : Double_t GetZDCEMEnergy(Int_t i) const
57 112 : {if(i==0){return fZDCEMEnergy;} else if(i==1){return fZDCEMEnergy1;}
58 32 : return 0;}
59 :
60 0 : const Double_t * GetZN1TowerEnergy() const {return fZN1TowerEnergy;}
61 0 : const Double_t * GetZN2TowerEnergy() const {return fZN2TowerEnergy;}
62 0 : const Double_t * GetZP1TowerEnergy() const {return fZP1TowerEnergy;}
63 0 : const Double_t * GetZP2TowerEnergy() const {return fZP2TowerEnergy;}
64 0 : const Double_t * GetZN1TowerEnergyLR() const {return fZN1TowerEnergyLR;}
65 0 : const Double_t * GetZN2TowerEnergyLR() const {return fZN2TowerEnergyLR;}
66 0 : const Double_t * GetZP1TowerEnergyLR() const {return fZP1TowerEnergyLR;}
67 0 : const Double_t * GetZP2TowerEnergyLR() const {return fZP2TowerEnergyLR;}
68 : //
69 : virtual Bool_t GetZNCentroidInPbPb(Float_t beamEne, Double_t centrZNC[2], Double_t centrZNA[2]);
70 : virtual Bool_t GetZNCentroidInpp(Double_t centrZNC[2], Double_t centrZNA[2]);
71 : //
72 :
73 0 : UInt_t GetZDCScaler(Int_t i) const {return fVMEScaler[i];}
74 0 : const UInt_t* GetZDCScaler() const {return fVMEScaler;}
75 :
76 0 : Int_t GetZDCTDCData(Int_t i, Int_t j) const {return fZDCTDCData[i][j];}
77 : Float_t GetZDCTDCCorrected(Int_t i, Int_t j) const
78 : {
79 0 : if(AliESDZDC::kCorrectedTDCFilled && (fZDCTDCData[i][j]!=0)) return fZDCTDCCorrected[i][j];
80 0 : else return 999.;
81 0 : }
82 :
83 0 : Int_t GetZNATDCChannel() {if(TestBit(AliESDZDC::kTDCcablingSet)) return fZDCTDCChannels[4]; else return 12;}
84 0 : Int_t GetZPATDCChannel() {if(TestBit(AliESDZDC::kTDCcablingSet)) return fZDCTDCChannels[5]; else return 13;}
85 0 : Int_t GetZEM1TDCChannel() {if(TestBit(AliESDZDC::kTDCcablingSet)) return fZDCTDCChannels[0]; else return 8;}
86 0 : Int_t GetZEM2TDCChannel() {if(TestBit(AliESDZDC::kTDCcablingSet)) return fZDCTDCChannels[1]; else return 9;}
87 0 : Int_t GetZNCTDCChannel() {if(TestBit(AliESDZDC::kTDCcablingSet)) return fZDCTDCChannels[2]; else return 10;}
88 0 : Int_t GetZPCTDCChannel() {if(TestBit(AliESDZDC::kTDCcablingSet)) return fZDCTDCChannels[3]; else return 11;}
89 0 : Int_t GetL0TDCChannel() {if(TestBit(AliESDZDC::kTDCcablingSet)) return fZDCTDCChannels[6]; else return 15;}
90 :
91 : Float_t GetZNTDCSum(Int_t ihit) const;
92 : Float_t GetZNTDCDiff(Int_t ihit) const;
93 :
94 0 : virtual Float_t GetZDCTimeSum() const {return GetZNTDCSum(0);}
95 0 : virtual Float_t GetZDCTimeDiff() const {return GetZNTDCDiff(0);}
96 :
97 0 : Bool_t IsZDCTDCcablingSet() const {if(TestBit(AliESDZDC::kTDCcablingSet)) return kTRUE;
98 0 : else return kFALSE;}
99 :
100 : void SetZDC(Double_t n1Energy, Double_t p1Energy,
101 : Double_t emEnergy0, Double_t emEnergy1,
102 : Double_t n2Energy, Double_t p2Energy,
103 : Short_t participants, Short_t nPartA, Short_t nPartC,
104 : Double_t b, Double_t bA, Double_t bC, UInt_t recoFlag)
105 16 : {fZDCN1Energy=n1Energy; fZDCP1Energy=p1Energy;
106 8 : fZDCEMEnergy=emEnergy0; fZDCEMEnergy1=emEnergy1;
107 8 : fZDCN2Energy=n2Energy; fZDCP2Energy=p2Energy;
108 8 : fZDCParticipants=participants; fZDCPartSideA=nPartA; fZDCPartSideC=nPartC;
109 8 : fImpactParameter=b; fImpactParamSideA=bA, fImpactParamSideC=bC,
110 8 : fESDQuality=recoFlag;}
111 : //
112 : void SetZN1TowerEnergy(const Float_t tow1[5])
113 112 : {for(Int_t i=0; i<5; i++) fZN1TowerEnergy[i] = tow1[i];}
114 : void SetZN2TowerEnergy(const Float_t tow2[5])
115 112 : {for(Int_t i=0; i<5; i++) fZN2TowerEnergy[i] = tow2[i];}
116 : void SetZP1TowerEnergy(const Float_t tow1[5])
117 112 : {for(Int_t i=0; i<5; i++) fZP1TowerEnergy[i] = tow1[i];}
118 : void SetZP2TowerEnergy(const Float_t tow2[5])
119 112 : {for(Int_t i=0; i<5; i++) fZP2TowerEnergy[i] = tow2[i];}
120 : void SetZN1TowerEnergyLR(const Float_t tow1[5])
121 112 : {for(Int_t i=0; i<5; i++) fZN1TowerEnergyLR[i] = tow1[i];}
122 : void SetZN2TowerEnergyLR(const Float_t tow2[5])
123 112 : {for(Int_t i=0; i<5; i++) fZN2TowerEnergyLR[i] = tow2[i];}
124 : void SetZP1TowerEnergyLR(const Float_t tow1[5])
125 112 : {for(Int_t i=0; i<5; i++) fZP1TowerEnergyLR[i] = tow1[i];}
126 : void SetZP2TowerEnergyLR(const Float_t tow2[5])
127 112 : {for(Int_t i=0; i<5; i++) fZP2TowerEnergyLR[i] = tow2[i];}
128 : void SetZNACentroid(const Float_t centrCoord[2])
129 0 : {for(Int_t i=0; i<2; i++) fZNACentrCoord[i] = centrCoord[i];}
130 : void SetZNCCentroid(const Float_t centrCoord[2])
131 0 : {for(Int_t i=0; i<2; i++) fZNCCentrCoord[i] = centrCoord[i];}
132 :
133 : void SetZDCScaler(const UInt_t count[32])
134 0 : {for(Int_t k=0; k<32; k++) fVMEScaler[k] = count[k];}
135 :
136 : void SetZDCTDCData(const Int_t values[32][4])
137 536 : {for(Int_t k=0; k<32; k++)
138 2568 : for(Int_t j=0; j<4; j++) fZDCTDCData[k][j] = values[k][j];}
139 :
140 : void SetZDCTDCCorrected(const Float_t values[32][4])
141 536 : {for(Int_t k=0; k<32; k++)
142 2568 : for(Int_t j=0; j<4; j++) fZDCTDCCorrected[k][j] = values[k][j];}
143 :
144 16 : Bool_t IsZNChit() {return fZNCTDChit;}
145 16 : Bool_t IsZNAhit() {return fZNATDChit;}
146 16 : Bool_t IsZPChit() {return fZPCTDChit;}
147 16 : Bool_t IsZPAhit() {return fZPATDChit;}
148 0 : Bool_t IsZEM1hit() {return fZEM1TDChit;}
149 0 : Bool_t IsZEM2hit() {return fZEM2TDChit;}
150 : //
151 8 : void SetZNCTDChit(Bool_t isf) {fZNCTDChit = isf;}
152 8 : void SetZPCTDChit(Bool_t isf) {fZPCTDChit = isf;}
153 8 : void SetZNATDChit(Bool_t isf) {fZNATDChit = isf;}
154 8 : void SetZPATDChit(Bool_t isf) {fZPATDChit = isf;}
155 8 : void SetZEM1TDChit(Bool_t isf) {fZEM1TDChit = isf;}
156 8 : void SetZEM2TDChit(Bool_t isf) {fZEM2TDChit = isf;}
157 :
158 0 : void SetZDCTDCChannel(int ich, int ival) {if(ich<7) fZDCTDCChannels[ich] = ival;}
159 :
160 : void Reset();
161 : void Print(const Option_t *opt=0) const;
162 : private:
163 : virtual void Copy(TObject &obj) const;
164 : private:
165 :
166 : Double32_t fZDCN1Energy; // reconstructed energy in the neutron ZDC
167 : Double32_t fZDCP1Energy; // reconstructed energy in the proton ZDC
168 : Double32_t fZDCN2Energy; // reconstructed energy in the neutron ZDC
169 : Double32_t fZDCP2Energy; // reconstructed energy in the proton ZDC
170 : Double32_t fZDCEMEnergy; // signal in the electromagnetic ZDCs
171 : Double32_t fZDCEMEnergy1; // second EM signal,cannot change fZDCEMEnergy to array (not backward compatible)
172 : Double32_t fZN1TowerEnergy[5];// reco E in 5 ZN1 sectors - high gain chain
173 : Double32_t fZN2TowerEnergy[5];// reco E in 5 ZN2 sectors - high gain chain
174 : Double32_t fZP1TowerEnergy[5];// reco E in 5 ZP1 sectors - high gain chain
175 : Double32_t fZP2TowerEnergy[5];// reco E in 5 ZP2 sectors - high gain chain
176 : Double32_t fZN1TowerEnergyLR[5];// reco E in 5 ZN1 sectors - low gain chain
177 : Double32_t fZN2TowerEnergyLR[5];// reco E in 5 ZN2 sectors - low gain chain
178 : Double32_t fZP1TowerEnergyLR[5];// reco E in 5 ZP1 sectors - low gain chain
179 : Double32_t fZP2TowerEnergyLR[5];// reco E in 5 ZP2 sectors - low gain chain
180 : Short_t fZDCParticipants; // number of participants estimated by the ZDC (ONLY in A-A)
181 : Short_t fZDCPartSideA; // number of participants estimated by the ZDC (ONLY in A-A)
182 : Short_t fZDCPartSideC; // number of participants estimated by the ZDC (ONLY in A-A)
183 : Double32_t fImpactParameter; // impact parameter estimated by the ZDC (ONLY in A-A)
184 : Double32_t fImpactParamSideA; // impact parameter estimated by the ZDC (ONLY in A-A)
185 : Double32_t fImpactParamSideC; // impact parameter estimated by the ZDC (ONLY in A-A)
186 : Double32_t fZNACentrCoord[2]; // Coordinates of the centroid over ZNC
187 : Double32_t fZNCCentrCoord[2]; // Coordinates of the centroid over ZNA
188 : UInt_t fESDQuality; // flags from reconstruction
189 : UInt_t fVMEScaler[32]; // counts from VME scaler
190 : Int_t fZDCTDCData[32][4]; // ZDC TDC data
191 : Float_t fZDCTDCCorrected[32][4];// ZDC TDC data in ns corrected 4 phase shift
192 : Bool_t fZNCTDChit; // true if ZNC TDC has at least 1 hit
193 : Bool_t fZNATDChit; // true if ZNA TDC has at least 1 hit
194 : Bool_t fZPCTDChit; // true if ZPC TDC has at least 1 hit
195 : Bool_t fZPATDChit; // true if ZPA TDC has at least 1 hit
196 : Bool_t fZEM1TDChit; // true if ZEM1 TDC has at least 1 hit
197 : Bool_t fZEM2TDChit; // true if ZEM2 TDC has at least 1 hit
198 : //
199 : Int_t fZDCTDCChannels[7];
200 :
201 1244 : ClassDef(AliESDZDC,20)
202 : };
203 :
204 : #endif
205 :
|