]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AOD/AliAODPid.cxx
Additional fixes
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODPid.cxx
CommitLineData
1c28d174 1/**************************************************************************
2 * Copyright(c) 1998-2007, 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// AOD Pid class to store additional pid information
d7bdc804 20// Author: Annalisa Mastroserio
1c28d174 21//-------------------------------------------------------------------------
22
23#include "AliAODPid.h"
d7bdc804 24#include "AliESDtrack.h"
25#include "AliLog.h"
7330f0e5 26#include "AliPID.h"
af48efa8 27#include "AliTPCdEdxInfo.h"
1c28d174 28
29ClassImp(AliAODPid)
30
d7bdc804 31
1c28d174 32//______________________________________________________________________________
d7bdc804 33AliAODPid::AliAODPid():
34 fITSsignal(0),
35 fTPCsignal(0),
a7307087 36 fTPCsignalN(0),
d999f2e6 37 fTPCmomentum(0),
ef7661fd 38 fTPCTgl(0),
d7bdc804 39 fTRDnSlices(0),
59a8e853 40 fTRDntls(0),
d7bdc804 41 fTRDslices(0x0),
6736efd5 42 fTRDsignal(0),
820214a7 43 fTRDChi2(0x0),
d7bdc804 44 fTOFesdsignal(0),
af48efa8 45 fTPCdEdxInfo(0)
1c28d174 46{
47 // default constructor
00a38d07 48 for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i] = 0;
b13bcc35 49 for(Int_t i=0; i<5; i++) fTOFpidResolution[i] = 0.;
59a8e853 50 for(Int_t i=0; i<6; i++) {
51 fTRDmomentum[i] = 0.;
52 fTRDncls[i] = 0;
53 }
6d354ed1 54 for(Int_t i=0; i<4; i++) fITSdEdxSamples[i] = 0.;
1c28d174 55}
56
57//______________________________________________________________________________
58AliAODPid::~AliAODPid()
59{
341952b8 60 delete [] fTRDslices;
61 fTRDslices = 0;
af48efa8 62 delete fTPCdEdxInfo;
1c28d174 63 // destructor
64}
65
66
67//______________________________________________________________________________
68AliAODPid::AliAODPid(const AliAODPid& pid) :
d7bdc804 69 TObject(pid),
70 fITSsignal(pid.fITSsignal),
71 fTPCsignal(pid.fTPCsignal),
a7307087 72 fTPCsignalN(pid.fTPCsignalN),
d999f2e6 73 fTPCmomentum(pid.fTPCmomentum),
ef7661fd 74 fTPCTgl(pid.fTPCTgl),
d7bdc804 75 fTRDnSlices(pid.fTRDnSlices),
59a8e853 76 fTRDntls(pid.fTRDntls),
d7bdc804 77 fTRDslices(0x0),
6736efd5 78 fTRDsignal(pid.fTRDsignal),
820214a7 79 fTRDChi2(pid.fTRDChi2),
d7bdc804 80 fTOFesdsignal(pid.fTOFesdsignal),
be63c0e3 81 fTPCdEdxInfo(0x0)
1c28d174 82{
83 // Copy constructor
6736efd5 84 SetTRDslices(fTRDnSlices, pid.fTRDslices);
00a38d07 85 for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
996918c5 86
59a8e853 87 for(Int_t i=0; i<6; i++){
88 fTRDmomentum[i]=pid.fTRDmomentum[i];
89 fTRDncls[i] = 0;
90 }
b13bcc35 91
92 for(Int_t i=0; i<5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
6d354ed1 93
94 for(Int_t i=0; i<4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
be63c0e3 95
96 if (pid.fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo(*pid.fTPCdEdxInfo);
1c28d174 97}
98
99//______________________________________________________________________________
100AliAODPid& AliAODPid::operator=(const AliAODPid& pid)
101{
102 // Assignment operator
103 if(this!=&pid) {
104 // copy stuff
2fb73d52 105 TObject::operator=(pid);
0f075bdc 106
107 fITSsignal = pid.fITSsignal;
108 for (Int_t i = 0; i < 4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
109 fTPCsignal = pid.fTPCsignal;
110 fTPCsignalN = pid.fTPCsignalN;
111 fTPCmomentum = pid.fTPCmomentum;
ef7661fd 112 fTPCTgl = pid.fTPCTgl;
0f075bdc 113
6736efd5 114 fTRDsignal = pid.fTRDsignal;
adf964b4 115 if(fTRDnSlices != pid.fTRDnSlices) {
341952b8 116 // only delete if number changed or is 0
117 delete [] fTRDslices;
118 fTRDslices = 0;
adf964b4 119 fTRDnSlices = pid.fTRDnSlices;
0f075bdc 120 if(pid.fTRDnSlices > 0) fTRDslices = new Double32_t[fTRDnSlices];
341952b8 121 }
adf964b4 122
73cb1e20 123 if (fTRDslices && pid.fTRDslices)
124 memcpy(fTRDslices, pid.fTRDslices, fTRDnSlices*sizeof(Double32_t));
0f075bdc 125
126 fTRDntls = pid.fTRDntls;
127 for(Int_t i = 0; i < 6; i++){
128 fTRDmomentum[i] = pid.fTRDmomentum[i];
129 fTRDncls[i] = pid.fTRDncls[i];
130 }
131
820214a7 132 fTRDChi2 = pid.fTRDChi2;
133
341952b8 134 fTOFesdsignal=pid.fTOFesdsignal;
0f075bdc 135 for (Int_t i = 0; i < 5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
136 for (Int_t i = 0; i < 5; i++) fIntTime[i]=pid.fIntTime[i];
137
996918c5 138 SetTPCdEdxInfo(pid.fTPCdEdxInfo);
1c28d174 139 }
140
141 return *this;
142}
d7bdc804 143//_______________________________________________________________________________
00a38d07 144void AliAODPid::GetIntegratedTimes(Double_t timeint[AliPID::kSPECIES]) const
d7bdc804 145{
373fc041 146 // Returns the array with integrated times for each particle hypothesis
00a38d07 147 for(Int_t i=0; i<AliPID::kSPECIES; i++) timeint[i]=fIntTime[i];
d7bdc804 148}
373fc041 149//_______________________________________________________________________________
00a38d07 150void AliAODPid::SetIntegratedTimes(Double_t timeint[AliPID::kSPECIES])
d7bdc804 151{
152 // Returns the array with integrated times for each particle hypothesis
00a38d07 153 for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=timeint[i];
d7bdc804 154}
b13bcc35 155//______________________________________________________________________________
156void AliAODPid::SetTOFpidResolution(Double_t tofPIDres[5])
157{
158 for (Int_t i=0; i<5; i++) fTOFpidResolution[i]=tofPIDres[i];
159
160}
161//______________________________________________________________________________
162void AliAODPid::GetTOFpidResolution(Double_t tofRes[5]) const
163{
164 for (Int_t i=0; i<5; i++) tofRes[i]=fTOFpidResolution[i];
165}
166
6d354ed1 167//______________________________________________________________________________
168void AliAODPid::SetITSdEdxSamples(const Double_t s[4])
169{
170 //
171 // Set the 4 values of dE/dx from individual ITS layers that are read from ESD
172 //
173 for (Int_t i=0; i<4; i++) fITSdEdxSamples[i]=s[i];
174}
175//______________________________________________________________________________
176void AliAODPid::GetITSdEdxSamples(Double_t s[4]) const
177{
178 //
179 // Get the 4 values of dE/dx from individual ITS layers that are read from ESD
180 //
181 for (Int_t i=0; i<4; i++) s[i]=fITSdEdxSamples[i];
182}
af48efa8 183//______________________________________________________________________________
184void AliAODPid::SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo)
185{
186 //
187 // Set TPC dEdx info
188 //
189 if (dEdxInfo==0x0){
190 delete fTPCdEdxInfo;
191 fTPCdEdxInfo=0x0;
192 return;
193 }
194 if (!fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo;
195 (*fTPCdEdxInfo)=(*dEdxInfo);
196}
197