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