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