First implementation of EMCAL trigger QA from Nicola Arbor
[u/mrichter/AliRoot.git] / ZDC / AliZDCReco.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *;
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 ////////////////////////////////////////////////
19 //  RecPoints classes for set ZDC             //
20 //  This class reconstructs the space         //
21 //  points from digits                        //
22 //  for the ZDC calorimeter                   //
23 ////////////////////////////////////////////////
24
25
26 #include "AliZDCReco.h"
27
28 ClassImp(AliZDCReco)
29   
30
31 //_____________________________________________________________________________
32 AliZDCReco::AliZDCReco() :
33         
34   TObject(),
35   //
36   fNDetSpecNSideA(0),
37   fNDetSpecPSideA(0),
38   fNDetSpecNSideC(0),
39   fNDetSpecPSideC(0),
40   fNTrueSpectators(0),
41   fNTrueSpecSideA(0),
42   fNTrueSpecSideC(0),
43   fNParticipants(0),
44   fNPartSideA(0),
45   fNPartSideC(0),
46   fImpParameter(0),
47   fImpParSideA(0),
48   fImpParSideC(0),
49   fRecoFlag(0x0),
50   fEnergyFlag(kFALSE),
51   fIsScalerOn(kFALSE)
52
53   //
54   // Default constructor
55   //
56   for(Int_t i=0; i<10; i++){
57      fZN1EnTow[i] = fZP1EnTow[i] = fZN2EnTow[i] = fZP2EnTow[i] = 0.;
58      if(i<2){
59        fZN1Energy[i] = fZP1Energy[i] = fZN2Energy[i] = fZP2Energy[i] =  0.;
60        fZEM1signal[i] = fZEM2signal[i] = 0.;
61        fPMRef1[i] = fPMRef2[i] = 0.;
62      }
63   }
64   
65   for(Int_t i=0; i<32; i++){
66     fZDCScaler[i] = 0;
67     for(Int_t ij=0; ij<4; ij++) fZDCTDCData[i][ij] = 0;
68   }
69 }
70   
71
72 //_____________________________________________________________________________
73 AliZDCReco::AliZDCReco(
74      Float_t* ezn1, Float_t* ezp1, Float_t* ezn2, Float_t* ezp2,  
75      Float_t* ezn1tow, Float_t* ezp1tow, Float_t* ezn2tow, Float_t* ezp2tow, 
76      Float_t* ezem1, Float_t* ezem2, Float_t* ref1, Float_t* ref2, 
77      //    
78      Int_t detspnSideA,  Int_t detsppSideA, Int_t detspnSideC, Int_t detsppSideC,  
79      Int_t trsp, Int_t trspSideA,Int_t trspSideC,
80      Int_t npart, Int_t npartSideA, Int_t npartSideC, 
81      Float_t b, Float_t bSideA, Float_t bSideC,
82      UInt_t recoFlag, Bool_t energyFlag, Bool_t scalerOn, 
83      UInt_t* scaler, Int_t tdcData[32][4]) :
84         
85   TObject(),
86   //
87   fNDetSpecNSideA(detspnSideA),
88   fNDetSpecPSideA(detsppSideA),
89   fNDetSpecNSideC(detspnSideC),
90   fNDetSpecPSideC(detsppSideC),
91   fNTrueSpectators(trsp),
92   fNTrueSpecSideA(trspSideA),
93   fNTrueSpecSideC(trspSideC),
94   fNParticipants(npart),
95   fNPartSideA(npartSideA),
96   fNPartSideC(npartSideC),
97   fImpParameter(b),
98   fImpParSideA(bSideA),
99   fImpParSideC(bSideC),
100   fRecoFlag(recoFlag),
101   fEnergyFlag(energyFlag),
102   fIsScalerOn(scalerOn)
103
104   //
105   // Constructor
106   //
107   for(Int_t j=0; j<10; j++){
108      fZN1EnTow[j] =  ezn1tow[j];
109      fZP1EnTow[j] =  ezp1tow[j];
110      fZN2EnTow[j] =  ezn2tow[j];
111      fZP2EnTow[j] =  ezp2tow[j];
112      if(j<2){
113        fZN1Energy[j] = ezn1[j];
114        fZP1Energy[j] = ezp1[j];
115        fZN2Energy[j] = ezn2[j];
116        fZP2Energy[j] = ezp2[j];
117        fZEM1signal[j] = ezem1[j];
118        fZEM2signal[j] = ezem2[j];
119        fPMRef1[j] = ref1[j];
120        fPMRef2[j] = ref2[j];
121      }
122   }
123   for(Int_t j=0; j<32; j++){
124     fZDCScaler[j] = scaler[j];
125     for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = tdcData[j][y];
126   }
127 }
128
129 //______________________________________________________________________________
130 AliZDCReco::AliZDCReco(const AliZDCReco &oldreco) :
131 TObject(),
132 fNDetSpecNSideA(oldreco.GetNDetSpecNSideA()),
133 fNDetSpecPSideA(oldreco.GetNDetSpecPSideA()),
134 fNDetSpecNSideC(oldreco.GetNDetSpecNSideC()),        
135 fNDetSpecPSideC(oldreco.GetNDetSpecPSideC()),       
136 fNTrueSpectators(oldreco.GetNTrueSpectators()),
137 fNTrueSpecSideA(oldreco.GetNTrueSpecSideA()),
138 fNTrueSpecSideC(oldreco.GetNTrueSpecSideC()),   
139 fNParticipants(oldreco.GetNParticipants()),                    
140 fNPartSideA(oldreco.GetNPartSideA()),                  
141 fNPartSideC(oldreco.GetNPartSideC()),                  
142 fImpParameter(oldreco.GetImpParameter()),      
143 fImpParSideA(oldreco.GetImpParSideA()),      
144 fImpParSideC(oldreco.GetImpParSideC()),
145 fRecoFlag(oldreco.GetRecoFlag()),
146 fEnergyFlag(oldreco.GetEnergyFlag()),
147 fIsScalerOn(oldreco.IsScalerOn())    
148 {
149   // Copy constructor
150
151   fZN1Energy[0]  = oldreco.GetZN1HREnergy();
152   fZP1Energy[0]  = oldreco.GetZP1HREnergy();            
153   fZN2Energy[0]  = oldreco.GetZN2HREnergy();         
154   fZP2Energy[0]  = oldreco.GetZP2HREnergy();     
155   //    
156   fZN1Energy[1]  = oldreco.GetZN1LREnergy();
157   fZP1Energy[1]  = oldreco.GetZP1LREnergy();           
158   fZN2Energy[1]  = oldreco.GetZN2LREnergy();        
159   fZP2Energy[1]  = oldreco.GetZP2LREnergy();        
160   //
161   for(Int_t i=0; i<5; i++){       
162      fZN1EnTow[i]  = oldreco.GetZN1HREnTow(i);
163      fZP1EnTow[i]  = oldreco.GetZP1HREnTow(i);
164      fZN2EnTow[i]  = oldreco.GetZN2HREnTow(i);
165      fZP2EnTow[i]  = oldreco.GetZP2HREnTow(i);
166      fZN1EnTow[i+5]  = oldreco.GetZN1LREnTow(i);
167      fZP1EnTow[i+5]  = oldreco.GetZP1LREnTow(i);
168      fZN2EnTow[i+5]  = oldreco.GetZN2LREnTow(i);
169      fZP2EnTow[i+5]  = oldreco.GetZP2LREnTow(i);
170   }
171   fZEM1signal[0] = oldreco.GetZEM1HRsignal();
172   fZEM1signal[1] = oldreco.GetZEM1LRsignal();
173   fZEM2signal[0] = oldreco.GetZEM2HRsignal();
174   fZEM2signal[1] = oldreco.GetZEM2LRsignal();
175   fPMRef1[0] = oldreco.GetPMRef1HRsignal();
176   fPMRef1[1] = oldreco.GetPMRef1LRsignal();
177   fPMRef2[0] = oldreco.GetPMRef2HRsignal();
178   fPMRef2[1] = oldreco.GetPMRef2LRsignal();
179   for(Int_t j=0; j<32; j++){
180     fZDCScaler[j] = oldreco.GetZDCScaler(j);
181     for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = oldreco.GetZDCTDCData(j, y);
182   }
183 }
184
185 //______________________________________________________________________________
186 void AliZDCReco::Print(Option_t *) const {
187   //
188   // Printing Reconstruction Parameters
189   //
190   printf(" ****************** AliZDCReco object ******************\n"
191          "       ---------------   side A ---------------\n"
192          " E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
193          " E_ZEM1 =  %1.2f TeV,  E_ZEM2 = %1.2f TeV\n "
194          " N_spec_n = %d, N_spec_p = %d,"
195          " N_part = %d, b = %1.4f fm\n"
196          "       ---------------   side C ---------------\n"
197          " E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
198          " N_spec_n = %d, N_spec_p = %d,"
199          " N_part = %d, b = %1.4f fm\n"
200          " *******************************************************\n",
201          fZN2Energy[0]/1000., fZP2Energy[0]/1000.,
202          fZEM1signal[0]/1000.,fZEM2signal[0]/1000.,
203          fNDetSpecNSideA,fNDetSpecPSideA, fNPartSideA,fImpParSideA,
204          fZN1Energy[0]/1000.,fZP1Energy[0]/1000.,       
205          fNDetSpecNSideC,fNDetSpecPSideC,fNPartSideC,fImpParSideC);
206          
207 }