2 #include "AliMultiplicity.h"
5 ClassImp(AliMultiplicity)
7 //______________________________________________________________________
8 AliMultiplicity::AliMultiplicity():
20 fFastOrFiredChips(1200),
21 fClusterFiredChips(1200)
23 // Default Constructor
26 for(Int_t ilayer = 0; ilayer < 6; ilayer++)fITSClusters[ilayer] = 0;
29 //______________________________________________________________________
30 AliMultiplicity::AliMultiplicity(Int_t ntr, Float_t *th, Float_t *ph, Float_t *dth, Float_t *dph, Int_t *labels, Int_t* labelsL2, Int_t ns, Float_t *ts, Float_t *ps, Short_t nfcL1, Short_t nfcL2, const TBits & fFastOr):
42 fFastOrFiredChips(1200),
43 fClusterFiredChips(1200)
45 // Standard constructor
47 fLabels = new Int_t[ntr];
48 fLabelsL2 = new Int_t[ntr];
49 fTh = new Double_t [ntr];
50 fPhi = new Double_t [ntr];
51 fDeltTh = new Double_t [ntr];
52 fDeltPhi = new Double_t [ntr];
53 for(Int_t i=0;i<fNtracks;i++){
58 fLabels[i] = labels[i];
59 fLabelsL2[i] = labelsL2[i];
63 fThsingle = new Double_t [ns];
64 fPhisingle = new Double_t [ns];
65 for(Int_t i=0;i<fNsingle;i++){
70 fFiredChips[0] = nfcL1;
71 fFiredChips[1] = nfcL2;
72 fFastOrFiredChips = fFastOr;
73 for(Int_t ilayer = 0; ilayer < 6; ilayer++)fITSClusters[ilayer] = 0;
76 //______________________________________________________________________
77 AliMultiplicity::AliMultiplicity(const AliMultiplicity& m):
89 fFastOrFiredChips(1200),
90 fClusterFiredChips(1200)
96 //______________________________________________________________________
97 AliMultiplicity &AliMultiplicity::operator=(const AliMultiplicity& m){
98 // assignment operator
99 if(this == &m)return *this;
100 ((TObject *)this)->operator=(m);
102 if(fTh)delete [] fTh;fTh = 0;
103 if(fPhi)delete [] fPhi;fPhi = 0;
104 if(fDeltTh)delete [] fDeltTh;fDeltTh= 0;
105 if(fDeltPhi)delete [] fDeltPhi;fDeltPhi = 0;
106 if(fLabels)delete [] fLabels;fLabels = 0;
107 if(fLabelsL2)delete [] fLabelsL2;fLabelsL2 = 0;
108 if(fThsingle)delete [] fThsingle;fThsingle = 0;
109 if(fPhisingle)delete [] fPhisingle;fPhisingle = 0;
115 void AliMultiplicity::Copy(TObject &obj) const {
117 // this overwrites the virtual TOBject::Copy()
118 // to allow run time copying without casting
121 if(this==&obj)return;
122 AliMultiplicity *robj = dynamic_cast<AliMultiplicity*>(&obj);
123 if(!robj)return; // not an AliMultiplicity
129 //______________________________________________________________________
130 void AliMultiplicity::Duplicate(const AliMultiplicity& m){
131 // used by copy constructor and assignment operator
132 fNtracks = m.fNtracks;
134 fTh = new Double_t[fNtracks];
135 fPhi = new Double_t[fNtracks];
136 fDeltTh = new Double_t[fNtracks];
137 fDeltPhi = new Double_t[fNtracks];
138 fLabels = new Int_t[fNtracks];
139 fLabelsL2 = new Int_t[fNtracks];
149 fNsingle = m.fNsingle;
151 fThsingle = new Double_t[fNsingle];
152 fPhisingle = new Double_t[fNsingle];
158 if(m.fTh)memcpy(fTh,m.fTh,fNtracks*sizeof(Double_t));
159 if(m.fPhi)memcpy(fPhi,m.fPhi,fNtracks*sizeof(Double_t));
160 if(m.fDeltTh)memcpy(fDeltTh,m.fDeltTh,fNtracks*sizeof(Double_t));
161 if(m.fDeltPhi)memcpy(fDeltPhi,m.fDeltPhi,fNtracks*sizeof(Double_t));
162 if(m.fLabels)memcpy(fLabels,m.fLabels,fNtracks*sizeof(Int_t));
163 if(m.fLabelsL2)memcpy(fLabelsL2,m.fLabelsL2,fNtracks*sizeof(Int_t));
164 if(m.fThsingle)memcpy(fThsingle,m.fThsingle,fNsingle*sizeof(Double_t));
165 if(m.fPhisingle)memcpy(fPhisingle,m.fPhisingle,fNsingle*sizeof(Double_t));
167 fFiredChips[0] = m.fFiredChips[0];
168 fFiredChips[1] = m.fFiredChips[1];
169 for(Int_t ilayer = 0; ilayer < 6; ilayer++){
170 fITSClusters[ilayer] = m.fITSClusters[ilayer];
175 fFastOrFiredChips = m.fFastOrFiredChips;
176 fClusterFiredChips = m.fClusterFiredChips;
179 //______________________________________________________________________
180 AliMultiplicity::~AliMultiplicity(){
182 if(fTh)delete [] fTh;fTh = 0;
183 if(fPhi)delete [] fPhi;fPhi = 0;
184 if(fDeltTh)delete [] fDeltTh;fDeltTh = 0;
185 if(fDeltPhi)delete [] fDeltPhi;fDeltPhi = 0;
186 if(fLabels)delete [] fLabels;fLabels = 0;
187 if(fLabelsL2)delete [] fLabelsL2;fLabelsL2 = 0;
188 if(fThsingle)delete [] fThsingle;fThsingle = 0;
189 if(fPhisingle)delete [] fPhisingle;fPhisingle = 0;
193 //______________________________________________________________________
194 void AliMultiplicity::SetLabel(Int_t i, Int_t layer, Int_t label)
196 if(i>=0 && i<fNtracks) {
200 } else if (layer == 1) {
202 fLabelsL2[i] = label;
207 Error("SetLabel","Invalid track number %d or layer %d",i,layer);
210 //______________________________________________________________________
211 UInt_t AliMultiplicity::GetNumberOfITSClusters(Int_t layMin, Int_t layMax) const {
213 if(layMax < layMin) {
214 AliError("layer min > layer max");
218 AliError("layer min < 0");
222 AliError("layer max > 0");
227 for (Int_t i=layMin; i<=layMax; i++) sum+=fITSClusters[i];