X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliAODCluster.cxx;h=aaabd96325268e9b0c03eeb000d1080799b2cb45;hb=384c0618e025235fbc2903f1b85e3b2847f2ff86;hp=fecf1cfffd42fab74b26f6a48171a09e07329472;hpb=14d55e62db194e40442ee7ede6171097c9f97fd2;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliAODCluster.cxx b/STEER/AliAODCluster.cxx index fecf1cfffd4..aaabd963252 100644 --- a/STEER/AliAODCluster.cxx +++ b/STEER/AliAODCluster.cxx @@ -26,14 +26,12 @@ ClassImp(AliAODCluster) //______________________________________________________________________________ AliAODCluster::AliAODCluster() : - AliVirtualParticle(), fEnergy(0), fChi2(-999.), fID(-999), - fLabel(-999), - fCovMatrix(NULL), - fProdVertex(0x0), - fPrimTrack(NULL), + fNLabel(0), + fLabel(0x0), + fFilterMap(0), fType(kUndef) { // default constructor @@ -44,58 +42,50 @@ AliAODCluster::AliAODCluster() : //______________________________________________________________________________ AliAODCluster::AliAODCluster(Int_t id, - Int_t label, + UInt_t nLabel, + Int_t *label, Double_t energy, Double_t x[3], - Double_t covMatrix[10], - Double_t pid[9], - AliAODVertex *prodVertex, - AliAODTrack *primTrack, - Char_t ttype) : - AliVirtualParticle(), + Double_t pid[13], + Char_t ttype, + UInt_t selectInfo) : fEnergy(energy), fChi2(-999.), fID(id), - fLabel(label), - fCovMatrix(NULL), - fProdVertex(prodVertex), - fPrimTrack(primTrack), + fNLabel(0), + fLabel(0x0), + fFilterMap(selectInfo), fType(ttype) { // constructor SetPosition(x); - if(covMatrix) SetCovMatrix(covMatrix); SetPID(pid); - + SetLabel(label, nLabel); } //______________________________________________________________________________ AliAODCluster::AliAODCluster(Int_t id, - Int_t label, + UInt_t nLabel, + Int_t *label, Float_t energy, Float_t x[3], - Float_t covMatrix[10], - Float_t pid[9], - AliAODVertex *prodVertex, - AliAODTrack *primTrack, - Char_t ttype) : - AliVirtualParticle(), + Float_t pid[13], + Char_t ttype, + UInt_t selectInfo) : fEnergy(energy), fChi2(-999.), fID(id), - fLabel(label), - fCovMatrix(NULL), - fProdVertex(prodVertex), - fPrimTrack(primTrack), + fNLabel(0), + fLabel(0x0), + fFilterMap(selectInfo), fType(ttype) { // constructor SetPosition(x); - if(covMatrix) SetCovMatrix(covMatrix); SetPID(pid); - + SetLabel(label, nLabel); } @@ -103,28 +93,27 @@ AliAODCluster::AliAODCluster(Int_t id, AliAODCluster::~AliAODCluster() { // destructor - delete fCovMatrix; + + RemoveLabel(); } //______________________________________________________________________________ AliAODCluster::AliAODCluster(const AliAODCluster& clus) : - AliVirtualParticle(clus), + TObject(clus), fEnergy(clus.fEnergy), fChi2(clus.fChi2), fID(clus.fID), - fLabel(clus.fLabel), - fCovMatrix(NULL), - fProdVertex(clus.fProdVertex), - fPrimTrack(clus.fPrimTrack), + fNLabel(0), + fLabel(0x0), + fFilterMap(clus.fFilterMap), fType(clus.fType) { // Copy constructor clus.GetPosition(fPosition); - if(clus.fCovMatrix) fCovMatrix=new AliAODRedCov<4>(*clus.fCovMatrix); SetPID(clus.fPID); - + SetLabel(clus.fLabel, clus.fNLabel); } //______________________________________________________________________________ @@ -133,8 +122,6 @@ AliAODCluster& AliAODCluster::operator=(const AliAODCluster& clus) // Assignment operator if(this!=&clus) { - AliVirtualParticle::operator=(clus); - clus.GetPosition(fPosition); clus.GetPID(fPID); @@ -142,13 +129,8 @@ AliAODCluster& AliAODCluster::operator=(const AliAODCluster& clus) fChi2 = clus.fChi2; fID = clus.fID; - fLabel = clus.fLabel; - - delete fCovMatrix; - if(clus.fCovMatrix) fCovMatrix=new AliAODRedCov<4>(*clus.fCovMatrix); - else fCovMatrix=NULL; - fProdVertex = clus.fProdVertex; - fPrimTrack = clus.fPrimTrack; + SetLabel(clus.fLabel, clus.fNLabel); + fFilterMap = clus.fFilterMap; fType = clus.fType; } @@ -178,7 +160,7 @@ AliAODCluster::AODCluPID_t AliAODCluster::GetMostProbablePID() const { // Returns the most probable PID array element. - Int_t nPID = 9; + Int_t nPID = 13; if (fPID) { AODCluPID_t loc = kUnknown; Double_t max = 0.; @@ -202,14 +184,53 @@ AliAODCluster::AODCluPID_t AliAODCluster::GetMostProbablePID() const } } +//______________________________________________________________________________ +void AliAODCluster::SetLabel(Int_t *label, UInt_t size) +{ + if (label && size>0) { + if (size != (UInt_t)fNLabel) { + RemoveLabel(); + fNLabel = size; + fLabel = new Int_t[fNLabel]; + } + + for (Int_t i = 0; i < fNLabel; i++) { + fLabel[i] = label[i]; + } + } else { + RemoveLabel(); + } + + return; +} + +//______________________________________________________________________________ +Int_t AliAODCluster::GetLabel(UInt_t i) const +{ + if (fLabel && i < (UInt_t)fNLabel) { + return fLabel[i]; + } else { + return -999; + } +} + +//______________________________________________________________________________ +void AliAODCluster::RemoveLabel() +{ + delete[] fLabel; + fLabel = 0x0; + fNLabel = 0; + + return; +} + //______________________________________________________________________________ void AliAODCluster::Print(Option_t* /* option */) const { // prints information about AliAODCluster - printf("Object name: %s Cluster type: %s\n", GetName(), GetTitle()); - printf(" energy = %f\n", E()); - printf(" chi2 = %f\n", Chi2()); - printf(" PID object: %p\n", PID()); + printf("Cluster type: %d\n", GetType()); + printf(" energy = %f\n", E()); + printf(" chi2 = %f\n", Chi2()); + printf(" PID object: %p\n", PID()); } -