Adding field for number of fired chips in SPD layer 1/2 (4 Bytes)
[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   fTh(0),
11   fPhi(0),
12   fDeltPhi(0),
13   fLabels(0),
14   fNsingle(0),
15   fThsingle(0),
16   fPhisingle(0)
17
18 {
19   // Default Constructor
20
21   fFiredChips[0] = -1;
22   fFiredChips[1] = -1;
23 }
24
25 //______________________________________________________________________
26 AliMultiplicity::AliMultiplicity(Int_t ntr, Float_t *t,  Float_t *ph, Float_t *df, Int_t *labels, Int_t ns, Float_t *ts, Float_t *ps):
27   TObject(),
28   fNtracks(ntr),
29   fTh(0),
30   fPhi(0),
31   fDeltPhi(0),
32   fLabels(0),
33   fNsingle(ns),
34   fThsingle(0),
35   fPhisingle(0)
36 {
37 // Standard constructor
38   if(ntr>0){
39     fTh = new Float_t [ntr];
40     fPhi = new Float_t [ntr];
41     fDeltPhi = new Float_t [ntr];
42     fLabels = new Int_t[ntr];
43     for(Int_t i=0;i<fNtracks;i++){
44       fTh[i]=t[i];
45       fPhi[i]=ph[i];
46       fDeltPhi[i]=df[i];
47       fLabels[i] = labels[i];
48     }
49   }
50   if(ns>0){
51     fThsingle = new Float_t [ns];
52     fPhisingle = new Float_t [ns];
53     for(Int_t i=0;i<fNsingle;i++){
54       fThsingle[i]=ts[i];
55       fPhisingle[i]=ps[i];
56     }
57   }
58
59   fFiredChips[0] = -1;
60   fFiredChips[1] = -1;
61 }
62
63 //______________________________________________________________________
64 AliMultiplicity::AliMultiplicity(const AliMultiplicity& m):
65   TObject(m),
66   fNtracks(m.fNtracks),
67   fTh(0),
68   fPhi(0),
69   fDeltPhi(0),
70   fLabels(0),
71   fNsingle(m.fNsingle),
72   fThsingle(0),
73   fPhisingle(0)
74 {
75   // copy constructor
76
77   Duplicate(m);
78
79 }
80
81 //______________________________________________________________________
82 AliMultiplicity &AliMultiplicity::operator=(const AliMultiplicity& m){
83   // assignment operator
84   if(this == &m)return *this;
85   ((TObject *)this)->operator=(m);
86
87   if (fTh)delete [] fTh;
88   if(fPhi)delete [] fPhi;
89   if(fDeltPhi)delete [] fDeltPhi;
90   if(fLabels)delete [] fLabels;
91   if(fThsingle)delete [] fThsingle;
92   if(fPhisingle)delete [] fPhisingle;
93   Duplicate(m);
94
95   return *this;
96 }
97
98 //______________________________________________________________________
99 void AliMultiplicity::Duplicate(const AliMultiplicity& m){
100   // used by copy constructor and assignment operator
101   fNtracks = m.fNtracks;
102   if(fNtracks>0){
103     fTh = new Float_t [fNtracks];
104     fPhi = new Float_t [fNtracks];
105     fDeltPhi = new Float_t [fNtracks];
106     fLabels = new Int_t[fNtracks];
107   }
108   else {
109     fTh = 0;
110     fPhi = 0;
111     fDeltPhi = 0;
112     fLabels = 0;
113   }
114   fNsingle = m.fNsingle;
115   if(fNsingle>0){
116     fThsingle = new Float_t [fNsingle];
117     fPhisingle = new Float_t [fNsingle];
118   }
119   else {
120     fThsingle = 0;
121     fPhisingle = 0;
122   }
123   memcpy(fTh,m.fTh,fNtracks*sizeof(Float_t));
124   memcpy(fPhi,m.fPhi,fNtracks*sizeof(Float_t));
125   memcpy(fDeltPhi,m.fDeltPhi,fNtracks*sizeof(Float_t));
126   memcpy(fLabels,m.fLabels,fNtracks*sizeof(Int_t));
127   memcpy(fThsingle,m.fThsingle,fNsingle*sizeof(Float_t));
128   memcpy(fPhisingle,m.fPhisingle,fNsingle*sizeof(Float_t));
129
130   fFiredChips[0] = m.fFiredChips[0];
131   fFiredChips[1] = m.fFiredChips[1];
132 }
133
134 //______________________________________________________________________
135 AliMultiplicity::~AliMultiplicity(){
136   // Destructor
137   if (fTh)delete [] fTh;
138   if(fPhi)delete [] fPhi;
139   if(fDeltPhi)delete [] fDeltPhi;
140   if(fLabels)delete [] fLabels;
141   if(fThsingle)delete [] fThsingle;
142   if(fPhisingle)delete [] fPhisingle;
143 }
144
145