Line data Source code
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
20 : // Author: Annalisa Mastroserio
21 : //-------------------------------------------------------------------------
22 :
23 : #include "AliAODPid.h"
24 : #include "AliESDtrack.h"
25 : #include "AliLog.h"
26 : #include "AliTPCdEdxInfo.h"
27 :
28 170 : ClassImp(AliAODPid)
29 :
30 :
31 : //______________________________________________________________________________
32 122 : AliAODPid::AliAODPid():
33 122 : fITSsignal(0),
34 122 : fTPCsignal(0),
35 122 : fTPCsignalN(0),
36 122 : fTPCmomentum(0),
37 122 : fTPCTgl(0),
38 122 : fTRDnSlices(0),
39 122 : fTRDntls(0),
40 122 : fTRDslices(0x0),
41 122 : fTRDsignal(0),
42 122 : fTRDChi2(0x0),
43 122 : fTOFesdsignal(0),
44 122 : fTPCdEdxInfo(0)
45 610 : {
46 : // default constructor
47 1464 : for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i] = 0;
48 1464 : for(Int_t i=0; i<5; i++) fTOFpidResolution[i] = 0.;
49 1708 : for(Int_t i=0; i<6; i++) {
50 732 : fTRDmomentum[i] = 0.;
51 732 : fTRDncls[i] = 0;
52 : }
53 1220 : for(Int_t i=0; i<4; i++) fITSdEdxSamples[i] = 0.;
54 244 : }
55 :
56 : //______________________________________________________________________________
57 : AliAODPid::~AliAODPid()
58 732 : {
59 242 : delete [] fTRDslices;
60 122 : fTRDslices = 0;
61 226 : delete fTPCdEdxInfo;
62 : // destructor
63 366 : }
64 :
65 :
66 : //______________________________________________________________________________
67 : AliAODPid::AliAODPid(const AliAODPid& pid) :
68 0 : TObject(pid),
69 0 : fITSsignal(pid.fITSsignal),
70 0 : fTPCsignal(pid.fTPCsignal),
71 0 : fTPCsignalN(pid.fTPCsignalN),
72 0 : fTPCmomentum(pid.fTPCmomentum),
73 0 : fTPCTgl(pid.fTPCTgl),
74 0 : fTRDnSlices(pid.fTRDnSlices),
75 0 : fTRDntls(pid.fTRDntls),
76 0 : fTRDslices(0x0),
77 0 : fTRDsignal(pid.fTRDsignal),
78 0 : fTRDChi2(pid.fTRDChi2),
79 0 : fTOFesdsignal(pid.fTOFesdsignal),
80 0 : fTPCdEdxInfo(0x0)
81 0 : {
82 : // Copy constructor
83 0 : SetTRDslices(fTRDnSlices, pid.fTRDslices);
84 0 : for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
85 :
86 0 : for(Int_t i=0; i<6; i++){
87 0 : fTRDmomentum[i]=pid.fTRDmomentum[i];
88 0 : fTRDncls[i] = 0;
89 : }
90 :
91 0 : for(Int_t i=0; i<5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
92 :
93 0 : for(Int_t i=0; i<4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
94 :
95 0 : if (pid.fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo(*pid.fTPCdEdxInfo);
96 0 : }
97 :
98 : //______________________________________________________________________________
99 : AliAODPid& AliAODPid::operator=(const AliAODPid& pid)
100 : {
101 : // Assignment operator
102 0 : if(this!=&pid) {
103 : // copy stuff
104 0 : TObject::operator=(pid);
105 :
106 0 : fITSsignal = pid.fITSsignal;
107 0 : for (Int_t i = 0; i < 4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
108 0 : fTPCsignal = pid.fTPCsignal;
109 0 : fTPCsignalN = pid.fTPCsignalN;
110 0 : fTPCmomentum = pid.fTPCmomentum;
111 0 : fTPCTgl = pid.fTPCTgl;
112 :
113 0 : fTRDsignal = pid.fTRDsignal;
114 0 : if(fTRDnSlices != pid.fTRDnSlices) {
115 : // only delete if number changed or is 0
116 0 : delete [] fTRDslices;
117 0 : fTRDslices = 0;
118 0 : fTRDnSlices = pid.fTRDnSlices;
119 0 : if(pid.fTRDnSlices > 0) fTRDslices = new Double32_t[fTRDnSlices];
120 : }
121 :
122 0 : if (fTRDslices && pid.fTRDslices)
123 0 : memcpy(fTRDslices, pid.fTRDslices, fTRDnSlices*sizeof(Double32_t));
124 :
125 0 : fTRDntls = pid.fTRDntls;
126 0 : for(Int_t i = 0; i < 6; i++){
127 0 : fTRDmomentum[i] = pid.fTRDmomentum[i];
128 0 : fTRDncls[i] = pid.fTRDncls[i];
129 : }
130 :
131 0 : fTRDChi2 = pid.fTRDChi2;
132 :
133 0 : fTOFesdsignal=pid.fTOFesdsignal;
134 0 : for (Int_t i = 0; i < 5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
135 0 : for (Int_t i = 0; i < 5; i++) fIntTime[i]=pid.fIntTime[i];
136 :
137 0 : SetTPCdEdxInfo(pid.fTPCdEdxInfo);
138 0 : }
139 :
140 0 : return *this;
141 : }
142 : //_______________________________________________________________________________
143 : void AliAODPid::GetIntegratedTimes(Double_t *timeint, Int_t nspec) const
144 : {
145 : // Returns the array with integrated times for each particle hypothesis
146 : //
147 0 : for(Int_t i=0; i<AliPID::kSPECIES; i++) timeint[i]=fIntTime[i];
148 : //Note: at the moment only kSPECIES entries are available
149 0 : if (nspec>AliPID::kSPECIES) for (int i=AliPID::kSPECIES;i<AliPID::kSPECIESC;i++) timeint[i]=0;
150 : //
151 0 : }
152 : //_______________________________________________________________________________
153 : void AliAODPid::SetIntegratedTimes(Double_t timeint[AliPID::kSPECIES])
154 : {
155 : // Returns the array with integrated times for each particle hypothesis
156 1560 : for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=timeint[i];
157 120 : }
158 : //______________________________________________________________________________
159 : void AliAODPid::SetTOFpidResolution(Double_t tofPIDres[5])
160 : {
161 1560 : for (Int_t i=0; i<5; i++) fTOFpidResolution[i]=tofPIDres[i];
162 :
163 120 : }
164 : //______________________________________________________________________________
165 : void AliAODPid::GetTOFpidResolution(Double_t tofRes[5]) const
166 : {
167 0 : for (Int_t i=0; i<5; i++) tofRes[i]=fTOFpidResolution[i];
168 0 : }
169 :
170 : //______________________________________________________________________________
171 : void AliAODPid::SetITSdEdxSamples(const Double_t s[4])
172 : {
173 : //
174 : // Set the 4 values of dE/dx from individual ITS layers that are read from ESD
175 : //
176 1320 : for (Int_t i=0; i<4; i++) fITSdEdxSamples[i]=s[i];
177 120 : }
178 : //______________________________________________________________________________
179 : void AliAODPid::GetITSdEdxSamples(Double_t s[4]) const
180 : {
181 : //
182 : // Get the 4 values of dE/dx from individual ITS layers that are read from ESD
183 : //
184 0 : for (Int_t i=0; i<4; i++) s[i]=fITSdEdxSamples[i];
185 0 : }
186 : //______________________________________________________________________________
187 : void AliAODPid::SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo)
188 : {
189 : //
190 : // Set TPC dEdx info
191 : //
192 312 : if (dEdxInfo==0x0){
193 104 : delete fTPCdEdxInfo;
194 0 : fTPCdEdxInfo=0x0;
195 0 : return;
196 : }
197 312 : if (!fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo;
198 104 : (*fTPCdEdxInfo)=(*dEdxInfo);
199 208 : }
200 :
|