Adding the number of fired chips in the ITS fast OR (Domenico, Massimo)
[u/mrichter/AliRoot.git] / STEER / AliMultiplicity.cxx
1 #include <string.h>
2 #include "AliMultiplicity.h"
3
4 ClassImp(AliMultiplicity)
5
6 //______________________________________________________________________
7 AliMultiplicity::AliMultiplicity():
8   TObject(),
9   fNtracks(0),
10   fNsingle(0),
11   fLabels(0),
12   fLabelsL2(0),
13   fTh(0),
14   fPhi(0),
15   fDeltPhi(0),
16   fThsingle(0),
17   fPhisingle(0),
18   fFastOrFiredChips(1200)
19 {
20   // Default Constructor
21   fFiredChips[0] = 0;
22   fFiredChips[1] = 0;
23 }
24
25 //______________________________________________________________________
26 AliMultiplicity::AliMultiplicity(Int_t ntr, Float_t *t,  Float_t *ph, Float_t *df, Int_t *labels, Int_t* labelsL2, Int_t ns, Float_t *ts, Float_t *ps, Short_t nfcL1, Short_t nfcL2, TBits fFastOr):
27   TObject(),
28   fNtracks(ntr),
29   fNsingle(ns),
30   fLabels(0),
31   fLabelsL2(0),
32   fTh(0),
33   fPhi(0),
34   fDeltPhi(0),
35   fThsingle(0),
36   fPhisingle(0),
37   fFastOrFiredChips(1200)
38 {
39 // Standard constructor
40   if(ntr>0){
41     fLabels = new Int_t[ntr];
42     fLabelsL2 = new Int_t[ntr];
43     fTh = new Double_t [ntr];
44     fPhi = new Double_t [ntr];
45     fDeltPhi = new Double_t [ntr];
46     for(Int_t i=0;i<fNtracks;i++){
47       fTh[i]=t[i];
48       fPhi[i]=ph[i];
49       fDeltPhi[i]=df[i];
50       fLabels[i] = labels[i];
51       fLabelsL2[i] = labelsL2[i];
52     }
53   }
54   if(ns>0){
55     fThsingle = new Double_t [ns];
56     fPhisingle = new Double_t [ns];
57     for(Int_t i=0;i<fNsingle;i++){
58       fThsingle[i]=ts[i];
59       fPhisingle[i]=ps[i];
60     }
61   }
62   fFiredChips[0] = nfcL1;
63   fFiredChips[1] = nfcL2;
64   fFastOrFiredChips = fFastOr;
65 }
66
67 //______________________________________________________________________
68 AliMultiplicity::AliMultiplicity(const AliMultiplicity& m):
69   TObject(m),
70   fNtracks(m.fNtracks),
71   fNsingle(m.fNsingle),
72   fLabels(0),
73   fLabelsL2(0),
74   fTh(0),
75   fPhi(0),
76   fDeltPhi(0),
77   fThsingle(0),
78   fPhisingle(0),
79   fFastOrFiredChips(1200)
80 {
81   // copy constructor
82   Duplicate(m);
83 }
84
85 //______________________________________________________________________
86 AliMultiplicity &AliMultiplicity::operator=(const AliMultiplicity& m){
87   // assignment operator
88   if(this == &m)return *this;
89   ((TObject *)this)->operator=(m);
90
91   if(fTh)delete [] fTh;fTh = 0;
92   if(fPhi)delete [] fPhi;fPhi = 0; 
93   if(fDeltPhi)delete [] fDeltPhi;fDeltPhi = 0; 
94   if(fLabels)delete [] fLabels;fLabels = 0;
95   if(fLabelsL2)delete [] fLabelsL2;fLabelsL2 = 0;
96   if(fThsingle)delete [] fThsingle;fThsingle = 0;
97   if(fPhisingle)delete [] fPhisingle;fPhisingle = 0;
98   Duplicate(m);
99
100   return *this;
101 }
102
103 void AliMultiplicity::Copy(TObject &obj) const {
104   
105   // this overwrites the virtual TOBject::Copy()
106   // to allow run time copying without casting
107   // in AliESDEvent
108
109   if(this==&obj)return;
110   AliMultiplicity *robj = dynamic_cast<AliMultiplicity*>(&obj);
111   if(!robj)return; // not an AliMultiplicity
112   *robj = *this;
113
114 }
115
116
117 //______________________________________________________________________
118 void AliMultiplicity::Duplicate(const AliMultiplicity& m){
119   // used by copy constructor and assignment operator
120   fNtracks = m.fNtracks;
121   if(fNtracks>0){
122     fTh = new Double_t[fNtracks];
123     fPhi = new Double_t[fNtracks];
124     fDeltPhi = new Double_t[fNtracks];
125     fLabels = new Int_t[fNtracks];
126     fLabelsL2 = new Int_t[fNtracks];
127   }
128   else {
129     fTh = 0;
130     fPhi = 0;
131     fDeltPhi = 0;
132     fLabels = 0;
133     fLabelsL2 = 0;
134   }
135   fNsingle = m.fNsingle;
136   if(fNsingle>0){
137     fThsingle = new Double_t[fNsingle];
138     fPhisingle = new Double_t[fNsingle];
139   }
140   else {
141     fThsingle = 0;
142     fPhisingle = 0;
143   }
144   if(m.fTh)memcpy(fTh,m.fTh,fNtracks*sizeof(Double_t));
145   if(m.fPhi)memcpy(fPhi,m.fPhi,fNtracks*sizeof(Double_t));
146   if(m.fDeltPhi)memcpy(fDeltPhi,m.fDeltPhi,fNtracks*sizeof(Double_t));
147   if(m.fLabels)memcpy(fLabels,m.fLabels,fNtracks*sizeof(Int_t));
148   if(m.fLabelsL2)memcpy(fLabelsL2,m.fLabelsL2,fNtracks*sizeof(Int_t));
149   if(m.fThsingle)memcpy(fThsingle,m.fThsingle,fNsingle*sizeof(Double_t));
150   if(m.fPhisingle)memcpy(fPhisingle,m.fPhisingle,fNsingle*sizeof(Double_t));
151
152   fFiredChips[0] = m.fFiredChips[0];
153   fFiredChips[1] = m.fFiredChips[1];
154
155   fFastOrFiredChips = m.fFastOrFiredChips;
156 }
157
158 //______________________________________________________________________
159 AliMultiplicity::~AliMultiplicity(){
160   // Destructor
161   if(fTh)delete [] fTh;fTh = 0;
162   if(fPhi)delete [] fPhi;fPhi = 0; 
163   if(fDeltPhi)delete [] fDeltPhi;fDeltPhi = 0; 
164   if(fLabels)delete [] fLabels;fLabels = 0;
165   if(fLabelsL2)delete [] fLabelsL2;fLabelsL2 = 0;
166   if(fThsingle)delete [] fThsingle;fThsingle = 0;
167   if(fPhisingle)delete [] fPhisingle;fPhisingle = 0;
168
169 }