40b99b9ed65fe8ca23a2d4457a4d14775fa268f0
[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   fIsScalerOn(kFALSE)
51
52   //
53   // Default constructor
54   //
55   for(Int_t i=0; i<10; i++){
56      fZN1EnTow[i] = fZP1EnTow[i] = fZN2EnTow[i] = fZP2EnTow[i] = 0.;
57      if(i<2){
58        fZN1Energy[i] = fZP1Energy[i] = fZN2Energy[i] = fZP2Energy[i] =  0.;
59        fZEM1signal[i] = fZEM2signal[i] = 0.;
60        fPMRef1[i] = fPMRef2[i] = 0.;
61      }
62   }
63   
64   for(Int_t i=0; i<32; i++){
65     fZDCScaler[i] = 0;
66     for(Int_t ij=0; ij<4; ij++) fZDCTDCData[i][ij] = 0;
67   }
68 }
69   
70
71 //_____________________________________________________________________________
72 AliZDCReco::AliZDCReco(
73      Float_t* ezn1, Float_t* ezp1, Float_t* ezn2, Float_t* ezp2,  
74      Float_t* ezn1tow, Float_t* ezp1tow, Float_t* ezn2tow, Float_t* ezp2tow, 
75      Float_t* ezem1, Float_t* ezem2, Float_t* ref1, Float_t* ref2, 
76      //    
77      Int_t detspnSideA,  Int_t detsppSideA, Int_t detspnSideC, Int_t detsppSideC,  
78      Int_t trsp, Int_t trspSideA,Int_t trspSideC,
79      Int_t npart, Int_t npartSideA, Int_t npartSideC, 
80      Float_t b, Float_t bSideA, Float_t bSideC,
81      UInt_t recoFlag, Bool_t scalerOn, UInt_t* scaler, Int_t tdcData[32][4]) :
82         
83   TObject(),
84   //
85   fNDetSpecNSideA(detspnSideA),
86   fNDetSpecPSideA(detsppSideA),
87   fNDetSpecNSideC(detspnSideC),
88   fNDetSpecPSideC(detsppSideC),
89   fNTrueSpectators(trsp),
90   fNTrueSpecSideA(trspSideA),
91   fNTrueSpecSideC(trspSideC),
92   fNParticipants(npart),
93   fNPartSideA(npartSideA),
94   fNPartSideC(npartSideC),
95   fImpParameter(b),
96   fImpParSideA(bSideA),
97   fImpParSideC(bSideC),
98   fRecoFlag(recoFlag),
99   fIsScalerOn(scalerOn)
100
101   //
102   // Constructor
103   //
104   for(Int_t j=0; j<10; j++){
105      fZN1EnTow[j] =  ezn1tow[j];
106      fZP1EnTow[j] =  ezp1tow[j];
107      fZN2EnTow[j] =  ezn2tow[j];
108      fZP2EnTow[j] =  ezp2tow[j];
109      if(j<2){
110        fZN1Energy[j] = ezn1[j];
111        fZP1Energy[j] = ezp1[j];
112        fZN2Energy[j] = ezn2[j];
113        fZP2Energy[j] = ezp2[j];
114        fZEM1signal[j] = ezem1[j];
115        fZEM2signal[j] = ezem2[j];
116        fPMRef1[j] = ref1[j];
117        fPMRef2[j] = ref2[j];
118      }
119   }
120   for(Int_t j=0; j<32; j++){
121     fZDCScaler[j] = scaler[j];
122     for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = tdcData[j][y];
123   }
124 }
125
126 //______________________________________________________________________________
127 AliZDCReco::AliZDCReco(const AliZDCReco &oldreco) :
128 TObject(),
129 fNDetSpecNSideA(oldreco.GetNDetSpecNSideA()),
130 fNDetSpecPSideA(oldreco.GetNDetSpecPSideA()),
131 fNDetSpecNSideC(oldreco.GetNDetSpecNSideC()),        
132 fNDetSpecPSideC(oldreco.GetNDetSpecPSideC()),       
133 fNTrueSpectators(oldreco.GetNTrueSpectators()),
134 fNTrueSpecSideA(oldreco.GetNTrueSpecSideA()),
135 fNTrueSpecSideC(oldreco.GetNTrueSpecSideC()),   
136 fNParticipants(oldreco.GetNParticipants()),                    
137 fNPartSideA(oldreco.GetNPartSideA()),                  
138 fNPartSideC(oldreco.GetNPartSideC()),                  
139 fImpParameter(oldreco.GetImpParameter()),      
140 fImpParSideA(oldreco.GetImpParSideA()),      
141 fImpParSideC(oldreco.GetImpParSideC()),
142 fRecoFlag(oldreco.GetRecoFlag()),
143 fIsScalerOn(oldreco.IsScalerOn())    
144 {
145   // Copy constructor
146
147   fZN1Energy[0]  = oldreco.GetZN1HREnergy();
148   fZP1Energy[0]  = oldreco.GetZP1HREnergy();            
149   fZN2Energy[0]  = oldreco.GetZN2HREnergy();         
150   fZP2Energy[0]  = oldreco.GetZP2HREnergy();     
151   //    
152   fZN1Energy[1]  = oldreco.GetZN1LREnergy();
153   fZP1Energy[1]  = oldreco.GetZP1LREnergy();           
154   fZN2Energy[1]  = oldreco.GetZN2LREnergy();        
155   fZP2Energy[1]  = oldreco.GetZP2LREnergy();        
156   //
157   for(Int_t i=0; i<5; i++){       
158      fZN1EnTow[i]  = oldreco.GetZN1HREnTow(i);
159      fZP1EnTow[i]  = oldreco.GetZP1HREnTow(i);
160      fZN2EnTow[i]  = oldreco.GetZN2HREnTow(i);
161      fZP2EnTow[i]  = oldreco.GetZP2HREnTow(i);
162      fZN1EnTow[i+5]  = oldreco.GetZN1LREnTow(i);
163      fZP1EnTow[i+5]  = oldreco.GetZP1LREnTow(i);
164      fZN2EnTow[i+5]  = oldreco.GetZN2LREnTow(i);
165      fZP2EnTow[i+5]  = oldreco.GetZP2LREnTow(i);
166   }
167   fZEM1signal[0] = oldreco.GetZEM1HRsignal();
168   fZEM1signal[1] = oldreco.GetZEM1LRsignal();
169   fZEM2signal[0] = oldreco.GetZEM2HRsignal();
170   fZEM2signal[1] = oldreco.GetZEM2LRsignal();
171   fPMRef1[0] = oldreco.GetPMRef1HRsignal();
172   fPMRef1[1] = oldreco.GetPMRef1LRsignal();
173   fPMRef2[0] = oldreco.GetPMRef2HRsignal();
174   fPMRef2[1] = oldreco.GetPMRef2LRsignal();
175   for(Int_t j=0; j<32; j++){
176     fZDCScaler[j] = oldreco.GetZDCScaler(j);
177     for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = oldreco.GetZDCTDCData(j, y);
178   }
179 }
180
181 //______________________________________________________________________________
182 void AliZDCReco::Print(Option_t *) const {
183   //
184   // Printing Reconstruction Parameters
185   //
186   printf(" ****************** AliZDCReco object ******************\n"
187          "       ---------------   side A ---------------\n"
188          " E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
189          " E_ZEM1 =  %1.2f TeV,  E_ZEM2 = %1.2f TeV\n "
190          " N_spec_n = %d, N_spec_p = %d,"
191          " N_part = %d, b = %1.4f fm\n"
192          "       ---------------   side C ---------------\n"
193          " E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
194          " N_spec_n = %d, N_spec_p = %d,"
195          " N_part = %d, b = %1.4f fm\n"
196          " *******************************************************\n",
197          fZN2Energy[0]/1000., fZP2Energy[0]/1000.,
198          fZEM1signal[0]/1000.,fZEM2signal[0]/1000.,
199          fNDetSpecNSideA,fNDetSpecPSideA, fNPartSideA,fImpParSideA,
200          fZN1Energy[0]/1000.,fZP1Energy[0]/1000.,       
201          fNDetSpecNSideC,fNDetSpecPSideC,fNPartSideC,fImpParSideC);
202          
203 }