]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliAODTracklets.cxx
added additional protection against usage of custom QA data objects in Ref (see also...
[u/mrichter/AliRoot.git] / STEER / AliAODTracklets.cxx
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 class to store tracklets
20 //     Author: Jan Fiete Grosse-Oetringhaus, CERN
21 //     Class created from AliMultiplicity
22 //-------------------------------------------------------------------------
23
24 #include "AliAODTracklets.h"
25
26 ClassImp(AliAODTracklets)
27
28 AliAODTracklets::AliAODTracklets() : TNamed(), fNTracks(0), fTheta(0), fPhi(0), fDeltaPhi(0), fLabels(0), fLabelsL2(0)
29 {
30   // default constructor
31 }
32
33 AliAODTracklets::AliAODTracklets(const char* name, const char* title) : TNamed(name, title), fNTracks(0), fTheta(0), fPhi(0), fDeltaPhi(0), fLabels(0), fLabelsL2(0)
34 {
35   // TNamed constructor
36 }
37
38 AliAODTracklets::AliAODTracklets(const AliAODTracklets& tracklet) :
39     TNamed(tracklet),
40     fNTracks(tracklet.fNTracks),
41     fTheta(0),
42     fPhi(0),
43     fDeltaPhi(0),
44     fLabels(0), 
45     fLabelsL2(0)
46 {
47 // Copy constructor
48     fTheta = new Double32_t[fNTracks];
49     fPhi = new Double32_t[fNTracks];
50     fDeltaPhi = new Double32_t[fNTracks];
51     fLabels = new Int_t[fNTracks];
52     fLabelsL2 = new Int_t[fNTracks];
53     for (Int_t i = 0; i < fNTracks; i++) {
54         fTheta[i]    = tracklet.fTheta[i];
55         fPhi[i]      = tracklet.fPhi[i];
56         fDeltaPhi[i] = tracklet.fDeltaPhi[i];
57         fLabels[i]   = tracklet.fLabels[i];
58         fLabelsL2[i]   = tracklet.fLabelsL2[i];
59     }
60 }
61
62 AliAODTracklets& AliAODTracklets::operator=(const AliAODTracklets& tracklet)
63 {
64 // Assignment operator
65     if(&tracklet == this) return *this;
66     TNamed::operator=(tracklet);
67     if(fNTracks!=tracklet.fNTracks){
68       fNTracks = tracklet.fNTracks;
69       CreateContainer(fNTracks);
70     }
71     for (Int_t i = 0; i < fNTracks; i++) {
72         fTheta[i]    = tracklet.fTheta[i];
73         fPhi[i]      = tracklet.fPhi[i];
74         fDeltaPhi[i] = tracklet.fDeltaPhi[i];
75         fLabels[i]   = tracklet.fLabels[i];
76         fLabelsL2[i]   = tracklet.fLabelsL2[i];
77     }
78     return *this;
79 }
80
81 void AliAODTracklets::CreateContainer(Int_t nTracks)
82 {
83   // function that creates container to store tracklets
84
85   DeleteContainer();
86   
87   fNTracks = nTracks;
88
89   if (fNTracks <= 0) {
90     fNTracks = 0;
91     return;
92   }
93
94   fTheta = new Double32_t[fNTracks];
95   fPhi = new Double32_t[fNTracks];
96   fDeltaPhi = new Double32_t[fNTracks];
97   fLabels = new Int_t[fNTracks];
98   fLabelsL2 = new Int_t[fNTracks];
99 }
100
101
102 AliAODTracklets::~AliAODTracklets()
103 {
104   // destructor
105
106   DeleteContainer();
107 }
108
109 void AliAODTracklets::DeleteContainer()
110 {
111   // deletes allocated memory
112
113   if (fTheta)
114   {
115     delete[] fTheta;
116     fTheta = 0;
117   }
118
119   if (fPhi)
120   {
121     delete[] fPhi;
122     fPhi = 0;
123   }
124
125   if (fDeltaPhi)
126   {
127     delete[] fDeltaPhi;
128     fDeltaPhi = 0;
129   }
130
131   if (fLabels)
132   {
133     delete[] fLabels;
134     fLabels = 0;
135   }
136
137   if (fLabelsL2)
138   {
139     delete[] fLabelsL2;
140     fLabelsL2 = 0;
141   }
142
143   fNTracks = 0;
144 }
145
146 Bool_t AliAODTracklets::SetTracklet(Int_t pos, Double32_t theta, Double32_t phi, Double32_t deltaPhi, Int_t labelL1, Int_t labelL2)
147 {
148   // Sets a tracklet at the given position
149
150   if (pos < 0 || pos >= fNTracks)
151     return kFALSE;
152
153   fTheta[pos] = theta;
154   fPhi[pos] = phi;
155   fDeltaPhi[pos] = deltaPhi;
156   fLabels[pos] = labelL1;
157   fLabelsL2[pos] = labelL2;
158
159   return kTRUE;
160 }
161