ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *;
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

////////////////////////////////////////////////
//  RecPoints classes for set ZDC             //
//  This class reconstructs the space         //
//  points from digits                        //
//  for the ZDC calorimeter                   //
////////////////////////////////////////////////


#include "AliZDCReco.h"

ClassImp(AliZDCReco)
  

//_____________________________________________________________________________
AliZDCReco::AliZDCReco() :
	
  TObject(),
  //
  fNDetSpecNSideA(0),
  fNDetSpecPSideA(0),
  fNDetSpecNSideC(0),
  fNDetSpecPSideC(0),
  fNTrueSpectators(0),
  fNTrueSpecSideA(0),
  fNTrueSpecSideC(0),
  fNParticipants(0),
  fNPartSideA(0),
  fNPartSideC(0),
  fImpParameter(0),
  fImpParSideA(0),
  fImpParSideC(0),
  fRecoFlag(0x0),
  fEnergyFlag(kFALSE),
  fIsScalerOn(kFALSE)
{ 
  //
  // Default constructor
  //
  for(Int_t i=0; i<10; i++){
     fZN1EnTow[i] = fZP1EnTow[i] = fZN2EnTow[i] = fZP2EnTow[i] = 0.;
     if(i<2){
       fZN1Energy[i] = fZP1Energy[i] = fZN2Energy[i] = fZP2Energy[i] =  0.;
       fZEM1signal[i] = fZEM2signal[i] = 0.;
       fPMRef1[i] = fPMRef2[i] = 0.;
     }
  }
  
  for(Int_t i=0; i<32; i++){
    fZDCScaler[i] = 0;
    for(Int_t ij=0; ij<4; ij++) fZDCTDCData[i][ij] = 0;
  }
}
  

//_____________________________________________________________________________
AliZDCReco::AliZDCReco(
     Float_t* ezn1, Float_t* ezp1, Float_t* ezn2, Float_t* ezp2,  
     Float_t* ezn1tow, Float_t* ezp1tow, Float_t* ezn2tow, Float_t* ezp2tow, 
     Float_t* ezem1, Float_t* ezem2, Float_t* ref1, Float_t* ref2, 
     //    
     Int_t detspnSideA,  Int_t detsppSideA, Int_t detspnSideC, Int_t detsppSideC,  
     Int_t trsp, Int_t trspSideA,Int_t trspSideC,
     Int_t npart, Int_t npartSideA, Int_t npartSideC, 
     Float_t b, Float_t bSideA, Float_t bSideC,
     UInt_t recoFlag, Bool_t energyFlag, Bool_t scalerOn, 
     UInt_t* scaler, Int_t tdcData[32][4]) :
	
  TObject(),
  //
  fNDetSpecNSideA(detspnSideA),
  fNDetSpecPSideA(detsppSideA),
  fNDetSpecNSideC(detspnSideC),
  fNDetSpecPSideC(detsppSideC),
  fNTrueSpectators(trsp),
  fNTrueSpecSideA(trspSideA),
  fNTrueSpecSideC(trspSideC),
  fNParticipants(npart),
  fNPartSideA(npartSideA),
  fNPartSideC(npartSideC),
  fImpParameter(b),
  fImpParSideA(bSideA),
  fImpParSideC(bSideC),
  fRecoFlag(recoFlag),
  fEnergyFlag(energyFlag),
  fIsScalerOn(scalerOn)
{ 
  //
  // Constructor
  //
  for(Int_t j=0; j<10; j++){
     fZN1EnTow[j] =  ezn1tow[j];
     fZP1EnTow[j] =  ezp1tow[j];
     fZN2EnTow[j] =  ezn2tow[j];
     fZP2EnTow[j] =  ezp2tow[j];
     if(j<2){
       fZN1Energy[j] = ezn1[j];
       fZP1Energy[j] = ezp1[j];
       fZN2Energy[j] = ezn2[j];
       fZP2Energy[j] = ezp2[j];
       fZEM1signal[j] = ezem1[j];
       fZEM2signal[j] = ezem2[j];
       fPMRef1[j] = ref1[j];
       fPMRef2[j] = ref2[j];
     }
  }
  for(Int_t j=0; j<32; j++){
    fZDCScaler[j] = scaler[j];
    for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = tdcData[j][y];
  }
}

//______________________________________________________________________________
AliZDCReco::AliZDCReco(const AliZDCReco &oldreco) :
TObject(),
fNDetSpecNSideA(oldreco.GetNDetSpecNSideA()),
fNDetSpecPSideA(oldreco.GetNDetSpecPSideA()),
fNDetSpecNSideC(oldreco.GetNDetSpecNSideC()),        
fNDetSpecPSideC(oldreco.GetNDetSpecPSideC()),       
fNTrueSpectators(oldreco.GetNTrueSpectators()),
fNTrueSpecSideA(oldreco.GetNTrueSpecSideA()),
fNTrueSpecSideC(oldreco.GetNTrueSpecSideC()),  	
fNParticipants(oldreco.GetNParticipants()),		       
fNPartSideA(oldreco.GetNPartSideA()),		       
fNPartSideC(oldreco.GetNPartSideC()),  		       
fImpParameter(oldreco.GetImpParameter()),      
fImpParSideA(oldreco.GetImpParSideA()),      
fImpParSideC(oldreco.GetImpParSideC()),
fRecoFlag(oldreco.GetRecoFlag()),
fEnergyFlag(oldreco.GetEnergyFlag()),
fIsScalerOn(oldreco.IsScalerOn())    
{
  // Copy constructor

  fZN1Energy[0]  = oldreco.GetZN1HREnergy();
  fZP1Energy[0]  = oldreco.GetZP1HREnergy();		
  fZN2Energy[0]  = oldreco.GetZN2HREnergy();	     
  fZP2Energy[0]  = oldreco.GetZP2HREnergy();	 
  //    
  fZN1Energy[1]  = oldreco.GetZN1LREnergy();
  fZP1Energy[1]  = oldreco.GetZP1LREnergy();	       
  fZN2Energy[1]  = oldreco.GetZN2LREnergy();	    
  fZP2Energy[1]  = oldreco.GetZP2LREnergy();	    
  //
  for(Int_t i=0; i<5; i++){	  
     fZN1EnTow[i]  = oldreco.GetZN1HREnTow(i);
     fZP1EnTow[i]  = oldreco.GetZP1HREnTow(i);
     fZN2EnTow[i]  = oldreco.GetZN2HREnTow(i);
     fZP2EnTow[i]  = oldreco.GetZP2HREnTow(i);
     fZN1EnTow[i+5]  = oldreco.GetZN1LREnTow(i);
     fZP1EnTow[i+5]  = oldreco.GetZP1LREnTow(i);
     fZN2EnTow[i+5]  = oldreco.GetZN2LREnTow(i);
     fZP2EnTow[i+5]  = oldreco.GetZP2LREnTow(i);
  }
  fZEM1signal[0] = oldreco.GetZEM1HRsignal();
  fZEM1signal[1] = oldreco.GetZEM1LRsignal();
  fZEM2signal[0] = oldreco.GetZEM2HRsignal();
  fZEM2signal[1] = oldreco.GetZEM2LRsignal();
  fPMRef1[0] = oldreco.GetPMRef1HRsignal();
  fPMRef1[1] = oldreco.GetPMRef1LRsignal();
  fPMRef2[0] = oldreco.GetPMRef2HRsignal();
  fPMRef2[1] = oldreco.GetPMRef2LRsignal();
  for(Int_t j=0; j<32; j++){
    fZDCScaler[j] = oldreco.GetZDCScaler(j);
    for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = oldreco.GetZDCTDCData(j, y);
  }
}


//______________________________________________________________________________
AliZDCReco &AliZDCReco::operator= (const AliZDCReco &reco) 
{
  // assignment operator
  if(&reco == this) return *this;
  
  fNDetSpecNSideA = reco.GetNDetSpecNSideA();
  fNDetSpecPSideA = reco.GetNDetSpecPSideA();
  fNDetSpecNSideC = reco.GetNDetSpecNSideC();        
  fNDetSpecPSideC = reco.GetNDetSpecPSideC();       
  fNTrueSpectators = reco.GetNTrueSpectators();
  fNTrueSpecSideA = reco.GetNTrueSpecSideA();
  fNTrueSpecSideC = reco.GetNTrueSpecSideC();  	
  fNParticipants = reco.GetNParticipants();		       
  fNPartSideA = reco.GetNPartSideA();		       
  fNPartSideC = reco.GetNPartSideC();  		       
  fImpParameter = reco.GetImpParameter();      
  fImpParSideA = reco.GetImpParSideA();      
  fImpParSideC = reco.GetImpParSideC();
  fRecoFlag = reco.GetRecoFlag();
  fEnergyFlag = reco.GetEnergyFlag();
  fIsScalerOn = reco.IsScalerOn();    

  fZN1Energy[0]  = reco.GetZN1HREnergy();
  fZP1Energy[0]  = reco.GetZP1HREnergy();		
  fZN2Energy[0]  = reco.GetZN2HREnergy();	     
  fZP2Energy[0]  = reco.GetZP2HREnergy();	 
  //    
  fZN1Energy[1]  = reco.GetZN1LREnergy();
  fZP1Energy[1]  = reco.GetZP1LREnergy();	       
  fZN2Energy[1]  = reco.GetZN2LREnergy();	    
  fZP2Energy[1]  = reco.GetZP2LREnergy();	    
  //
  for(Int_t i=0; i<5; i++){	  
     fZN1EnTow[i]  = reco.GetZN1HREnTow(i);
     fZP1EnTow[i]  = reco.GetZP1HREnTow(i);
     fZN2EnTow[i]  = reco.GetZN2HREnTow(i);
     fZP2EnTow[i]  = reco.GetZP2HREnTow(i);
     fZN1EnTow[i+5]  = reco.GetZN1LREnTow(i);
     fZP1EnTow[i+5]  = reco.GetZP1LREnTow(i);
     fZN2EnTow[i+5]  = reco.GetZN2LREnTow(i);
     fZP2EnTow[i+5]  = reco.GetZP2LREnTow(i);
  }
  fZEM1signal[0] = reco.GetZEM1HRsignal();
  fZEM1signal[1] = reco.GetZEM1LRsignal();
  fZEM2signal[0] = reco.GetZEM2HRsignal();
  fZEM2signal[1] = reco.GetZEM2LRsignal();
  fPMRef1[0] = reco.GetPMRef1HRsignal();
  fPMRef1[1] = reco.GetPMRef1LRsignal();
  fPMRef2[0] = reco.GetPMRef2HRsignal();
  fPMRef2[1] = reco.GetPMRef2LRsignal();
  for(Int_t j=0; j<32; j++){
    fZDCScaler[j] = reco.GetZDCScaler(j);
    for(Int_t y=0; y<4; y++) fZDCTDCData[j][y] = reco.GetZDCTDCData(j, y);
  }
  
  
  return *this;
}

//______________________________________________________________________________
void AliZDCReco::Print(Option_t *) const {
  //
  // Printing Reconstruction Parameters
  //
  printf(" ****************** AliZDCReco object ******************\n"
  	 "       ---------------   side A ---------------\n"
	 " E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
	 " E_ZEM1 =  %1.2f TeV,  E_ZEM2 = %1.2f TeV\n "
	 " N_spec_n = %d, N_spec_p = %d,"
	 " N_part = %d, b = %1.4f fm\n"
  	 "       ---------------   side C ---------------\n"
	 " E_ZN = %1.2f TeV, E_ZP = %1.2f TeV, "
	 " N_spec_n = %d, N_spec_p = %d,"
	 " N_part = %d, b = %1.4f fm\n"
         " *******************************************************\n",
	 fZN2Energy[0]/1000., fZP2Energy[0]/1000.,
	 fZEM1signal[0]/1000.,fZEM2signal[0]/1000.,
	 fNDetSpecNSideA,fNDetSpecPSideA, fNPartSideA,fImpParSideA,
	 fZN1Energy[0]/1000.,fZP1Energy[0]/1000.,	
         fNDetSpecNSideC,fNDetSpecPSideC,fNPartSideC,fImpParSideC);
	 
}
 AliZDCReco.cxx:1
 AliZDCReco.cxx:2
 AliZDCReco.cxx:3
 AliZDCReco.cxx:4
 AliZDCReco.cxx:5
 AliZDCReco.cxx:6
 AliZDCReco.cxx:7
 AliZDCReco.cxx:8
 AliZDCReco.cxx:9
 AliZDCReco.cxx:10
 AliZDCReco.cxx:11
 AliZDCReco.cxx:12
 AliZDCReco.cxx:13
 AliZDCReco.cxx:14
 AliZDCReco.cxx:15
 AliZDCReco.cxx:16
 AliZDCReco.cxx:17
 AliZDCReco.cxx:18
 AliZDCReco.cxx:19
 AliZDCReco.cxx:20
 AliZDCReco.cxx:21
 AliZDCReco.cxx:22
 AliZDCReco.cxx:23
 AliZDCReco.cxx:24
 AliZDCReco.cxx:25
 AliZDCReco.cxx:26
 AliZDCReco.cxx:27
 AliZDCReco.cxx:28
 AliZDCReco.cxx:29
 AliZDCReco.cxx:30
 AliZDCReco.cxx:31
 AliZDCReco.cxx:32
 AliZDCReco.cxx:33
 AliZDCReco.cxx:34
 AliZDCReco.cxx:35
 AliZDCReco.cxx:36
 AliZDCReco.cxx:37
 AliZDCReco.cxx:38
 AliZDCReco.cxx:39
 AliZDCReco.cxx:40
 AliZDCReco.cxx:41
 AliZDCReco.cxx:42
 AliZDCReco.cxx:43
 AliZDCReco.cxx:44
 AliZDCReco.cxx:45
 AliZDCReco.cxx:46
 AliZDCReco.cxx:47
 AliZDCReco.cxx:48
 AliZDCReco.cxx:49
 AliZDCReco.cxx:50
 AliZDCReco.cxx:51
 AliZDCReco.cxx:52
 AliZDCReco.cxx:53
 AliZDCReco.cxx:54
 AliZDCReco.cxx:55
 AliZDCReco.cxx:56
 AliZDCReco.cxx:57
 AliZDCReco.cxx:58
 AliZDCReco.cxx:59
 AliZDCReco.cxx:60
 AliZDCReco.cxx:61
 AliZDCReco.cxx:62
 AliZDCReco.cxx:63
 AliZDCReco.cxx:64
 AliZDCReco.cxx:65
 AliZDCReco.cxx:66
 AliZDCReco.cxx:67
 AliZDCReco.cxx:68
 AliZDCReco.cxx:69
 AliZDCReco.cxx:70
 AliZDCReco.cxx:71
 AliZDCReco.cxx:72
 AliZDCReco.cxx:73
 AliZDCReco.cxx:74
 AliZDCReco.cxx:75
 AliZDCReco.cxx:76
 AliZDCReco.cxx:77
 AliZDCReco.cxx:78
 AliZDCReco.cxx:79
 AliZDCReco.cxx:80
 AliZDCReco.cxx:81
 AliZDCReco.cxx:82
 AliZDCReco.cxx:83
 AliZDCReco.cxx:84
 AliZDCReco.cxx:85
 AliZDCReco.cxx:86
 AliZDCReco.cxx:87
 AliZDCReco.cxx:88
 AliZDCReco.cxx:89
 AliZDCReco.cxx:90
 AliZDCReco.cxx:91
 AliZDCReco.cxx:92
 AliZDCReco.cxx:93
 AliZDCReco.cxx:94
 AliZDCReco.cxx:95
 AliZDCReco.cxx:96
 AliZDCReco.cxx:97
 AliZDCReco.cxx:98
 AliZDCReco.cxx:99
 AliZDCReco.cxx:100
 AliZDCReco.cxx:101
 AliZDCReco.cxx:102
 AliZDCReco.cxx:103
 AliZDCReco.cxx:104
 AliZDCReco.cxx:105
 AliZDCReco.cxx:106
 AliZDCReco.cxx:107
 AliZDCReco.cxx:108
 AliZDCReco.cxx:109
 AliZDCReco.cxx:110
 AliZDCReco.cxx:111
 AliZDCReco.cxx:112
 AliZDCReco.cxx:113
 AliZDCReco.cxx:114
 AliZDCReco.cxx:115
 AliZDCReco.cxx:116
 AliZDCReco.cxx:117
 AliZDCReco.cxx:118
 AliZDCReco.cxx:119
 AliZDCReco.cxx:120
 AliZDCReco.cxx:121
 AliZDCReco.cxx:122
 AliZDCReco.cxx:123
 AliZDCReco.cxx:124
 AliZDCReco.cxx:125
 AliZDCReco.cxx:126
 AliZDCReco.cxx:127
 AliZDCReco.cxx:128
 AliZDCReco.cxx:129
 AliZDCReco.cxx:130
 AliZDCReco.cxx:131
 AliZDCReco.cxx:132
 AliZDCReco.cxx:133
 AliZDCReco.cxx:134
 AliZDCReco.cxx:135
 AliZDCReco.cxx:136
 AliZDCReco.cxx:137
 AliZDCReco.cxx:138
 AliZDCReco.cxx:139
 AliZDCReco.cxx:140
 AliZDCReco.cxx:141
 AliZDCReco.cxx:142
 AliZDCReco.cxx:143
 AliZDCReco.cxx:144
 AliZDCReco.cxx:145
 AliZDCReco.cxx:146
 AliZDCReco.cxx:147
 AliZDCReco.cxx:148
 AliZDCReco.cxx:149
 AliZDCReco.cxx:150
 AliZDCReco.cxx:151
 AliZDCReco.cxx:152
 AliZDCReco.cxx:153
 AliZDCReco.cxx:154
 AliZDCReco.cxx:155
 AliZDCReco.cxx:156
 AliZDCReco.cxx:157
 AliZDCReco.cxx:158
 AliZDCReco.cxx:159
 AliZDCReco.cxx:160
 AliZDCReco.cxx:161
 AliZDCReco.cxx:162
 AliZDCReco.cxx:163
 AliZDCReco.cxx:164
 AliZDCReco.cxx:165
 AliZDCReco.cxx:166
 AliZDCReco.cxx:167
 AliZDCReco.cxx:168
 AliZDCReco.cxx:169
 AliZDCReco.cxx:170
 AliZDCReco.cxx:171
 AliZDCReco.cxx:172
 AliZDCReco.cxx:173
 AliZDCReco.cxx:174
 AliZDCReco.cxx:175
 AliZDCReco.cxx:176
 AliZDCReco.cxx:177
 AliZDCReco.cxx:178
 AliZDCReco.cxx:179
 AliZDCReco.cxx:180
 AliZDCReco.cxx:181
 AliZDCReco.cxx:182
 AliZDCReco.cxx:183
 AliZDCReco.cxx:184
 AliZDCReco.cxx:185
 AliZDCReco.cxx:186
 AliZDCReco.cxx:187
 AliZDCReco.cxx:188
 AliZDCReco.cxx:189
 AliZDCReco.cxx:190
 AliZDCReco.cxx:191
 AliZDCReco.cxx:192
 AliZDCReco.cxx:193
 AliZDCReco.cxx:194
 AliZDCReco.cxx:195
 AliZDCReco.cxx:196
 AliZDCReco.cxx:197
 AliZDCReco.cxx:198
 AliZDCReco.cxx:199
 AliZDCReco.cxx:200
 AliZDCReco.cxx:201
 AliZDCReco.cxx:202
 AliZDCReco.cxx:203
 AliZDCReco.cxx:204
 AliZDCReco.cxx:205
 AliZDCReco.cxx:206
 AliZDCReco.cxx:207
 AliZDCReco.cxx:208
 AliZDCReco.cxx:209
 AliZDCReco.cxx:210
 AliZDCReco.cxx:211
 AliZDCReco.cxx:212
 AliZDCReco.cxx:213
 AliZDCReco.cxx:214
 AliZDCReco.cxx:215
 AliZDCReco.cxx:216
 AliZDCReco.cxx:217
 AliZDCReco.cxx:218
 AliZDCReco.cxx:219
 AliZDCReco.cxx:220
 AliZDCReco.cxx:221
 AliZDCReco.cxx:222
 AliZDCReco.cxx:223
 AliZDCReco.cxx:224
 AliZDCReco.cxx:225
 AliZDCReco.cxx:226
 AliZDCReco.cxx:227
 AliZDCReco.cxx:228
 AliZDCReco.cxx:229
 AliZDCReco.cxx:230
 AliZDCReco.cxx:231
 AliZDCReco.cxx:232
 AliZDCReco.cxx:233
 AliZDCReco.cxx:234
 AliZDCReco.cxx:235
 AliZDCReco.cxx:236
 AliZDCReco.cxx:237
 AliZDCReco.cxx:238
 AliZDCReco.cxx:239
 AliZDCReco.cxx:240
 AliZDCReco.cxx:241
 AliZDCReco.cxx:242
 AliZDCReco.cxx:243
 AliZDCReco.cxx:244
 AliZDCReco.cxx:245
 AliZDCReco.cxx:246
 AliZDCReco.cxx:247
 AliZDCReco.cxx:248
 AliZDCReco.cxx:249
 AliZDCReco.cxx:250
 AliZDCReco.cxx:251
 AliZDCReco.cxx:252
 AliZDCReco.cxx:253
 AliZDCReco.cxx:254
 AliZDCReco.cxx:255
 AliZDCReco.cxx:256
 AliZDCReco.cxx:257
 AliZDCReco.cxx:258
 AliZDCReco.cxx:259
 AliZDCReco.cxx:260
 AliZDCReco.cxx:261
 AliZDCReco.cxx:262
 AliZDCReco.cxx:263
 AliZDCReco.cxx:264
 AliZDCReco.cxx:265
 AliZDCReco.cxx:266
 AliZDCReco.cxx:267
 AliZDCReco.cxx:268