]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliAODCluster.cxx
Changes to take into account the recent modifications in libESD.pkg
[u/mrichter/AliRoot.git] / STEER / AliAODCluster.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 cluster base class
20 //     Author: Markus Oldenburg, CERN
21 //-------------------------------------------------------------------------
22
23 #include "AliAODCluster.h"
24
25 ClassImp(AliAODCluster)
26
27 //______________________________________________________________________________
28 AliAODCluster::AliAODCluster() : 
29   AliVirtualParticle(),
30   fEnergy(0),
31   fChi2(-999.),
32   fID(-999),
33   fLabel(-999),
34   fCovMatrix(NULL),
35   fProdVertex(0x0),
36   fPrimTrack(NULL),
37   fType(kUndef)
38 {
39   // default constructor
40
41   SetPosition((Float_t*)NULL);
42   SetPID((Float_t*)NULL);
43 }
44
45 //______________________________________________________________________________
46 AliAODCluster::AliAODCluster(Int_t id,
47                              Int_t label, 
48                              Double_t energy,
49                              Double_t x[3],
50                              Double_t covMatrix[10],
51                              Double_t pid[10],
52                              AliAODVertex *prodVertex,
53                              AliAODTrack *primTrack,
54                              Char_t ttype) :
55   AliVirtualParticle(),
56   fEnergy(energy),
57   fChi2(-999.),
58   fID(id),
59   fLabel(label),
60   fCovMatrix(NULL),
61   fProdVertex(prodVertex),
62   fPrimTrack(primTrack),
63   fType(ttype)
64 {
65   // constructor
66  
67   SetPosition(x);
68   if(covMatrix) SetCovMatrix(covMatrix);
69   SetPID(pid);
70
71 }
72
73 //______________________________________________________________________________
74 AliAODCluster::AliAODCluster(Int_t id,
75                              Int_t label, 
76                              Float_t energy,
77                              Float_t x[3],
78                              Float_t covMatrix[10],
79                              Float_t pid[10],
80                              AliAODVertex *prodVertex,
81                              AliAODTrack *primTrack,
82                              Char_t ttype) :
83   AliVirtualParticle(),
84   fEnergy(energy),
85   fChi2(-999.),
86   fID(id),
87   fLabel(label),
88   fCovMatrix(NULL),
89   fProdVertex(prodVertex),
90   fPrimTrack(primTrack),
91   fType(ttype)
92 {
93   // constructor
94  
95   SetPosition(x);
96   if(covMatrix) SetCovMatrix(covMatrix);
97   SetPID(pid);
98
99 }
100
101
102 //______________________________________________________________________________
103 AliAODCluster::~AliAODCluster() 
104 {
105   // destructor
106   delete fCovMatrix;
107 }
108
109
110 //______________________________________________________________________________
111 AliAODCluster::AliAODCluster(const AliAODCluster& trk) :
112   AliVirtualParticle(trk),
113   fEnergy(trk.fEnergy),
114   fChi2(trk.fChi2),
115   fID(trk.fID),
116   fLabel(trk.fLabel),
117   fCovMatrix(NULL),
118   fProdVertex(trk.fProdVertex),
119   fPrimTrack(trk.fPrimTrack),
120   fType(trk.fType)
121 {
122   // Copy constructor
123
124   trk.GetPosition(fPosition);
125   if(trk.fCovMatrix) fCovMatrix=new AliAODRedCov<4>(*trk.fCovMatrix);
126   SetPID(trk.fPID);
127
128 }
129
130 //______________________________________________________________________________
131 AliAODCluster& AliAODCluster::operator=(const AliAODCluster& trk)
132 {
133   // Assignment operator
134   if(this!=&trk) {
135
136     AliVirtualParticle::operator=(trk);
137
138     trk.GetPosition(fPosition);
139     trk.GetPID(fPID);
140
141     fChi2 = trk.fEnergy;
142     fChi2 = trk.fChi2;
143
144     fID = trk.fID;
145     fLabel = trk.fLabel;    
146     
147     delete fCovMatrix;
148     if(trk.fCovMatrix) fCovMatrix=new AliAODRedCov<4>(*trk.fCovMatrix);
149     else fCovMatrix=NULL;
150     fProdVertex = trk.fProdVertex;
151     fPrimTrack = trk.fPrimTrack;
152
153     fType = trk.fType;
154   }
155
156   return *this;
157 }
158
159 //______________________________________________________________________________
160 template <class T> void AliAODCluster::SetPosition(const T *x) 
161 {
162   // set the position
163
164   if (x) {
165       fPosition[0] = x[0];
166       fPosition[1] = x[1];
167       fPosition[2] = x[2];
168   } else {
169
170     fPosition[0] = -999.;
171     fPosition[1] = -999.;
172     fPosition[2] = -999.;
173   }
174 }
175
176 //______________________________________________________________________________
177 void AliAODCluster::Print(Option_t* /* option */) const
178 {
179   // prints information about AliAODCluster
180
181   printf("Object name: %s   Cluster type: %s\n", GetName(), GetTitle()); 
182   printf("    energy = %f\n", E());
183   printf("      chi2 = %f\n", Chi2());
184   printf(" PID object: %p\n", PID());
185 }
186