From f83e88f6e641ebed9826b9b8c284dbef06cba90a Mon Sep 17 00:00:00 2001 From: loizides Date: Fri, 10 Sep 2004 14:14:17 +0000 Subject: [PATCH] Added sort method. --- JETAN/AliJetParticle.cxx | 395 +-------------------------------------- JETAN/AliJetParticle.h | 5 + 2 files changed, 10 insertions(+), 390 deletions(-) diff --git a/JETAN/AliJetParticle.cxx b/JETAN/AliJetParticle.cxx index 9e42c18e816..22cd1f397b8 100644 --- a/JETAN/AliJetParticle.cxx +++ b/JETAN/AliJetParticle.cxx @@ -87,396 +87,11 @@ void AliJetParticle::Print(Option_t* /*t*/) const cout << fPt << " " << fEta << " " << fPhi << endl; } - - -#if 0 -Int_t AliHBTParticle::fgDebug = 0; -//______________________________________________________________________________ -AliHBTParticle::AliHBTParticle(): - fPdgIdx(0), fIdxInEvent(0),fNPids(0),fPids(0x0),fPidProb(0x0), - fCalcMass(0),fPx(0), fPy(0),fPz(0),fE(0), fVx(0), fVy(0),fVz(0),fVt(0), - fTrackPoints(0x0),fClusterMap(0x0) -{//empty particle -} -//______________________________________________________________________________ - -AliHBTParticle::AliHBTParticle(Int_t pdg, Int_t idx, - Double_t px, Double_t py, Double_t pz, Double_t etot, - Double_t vx, Double_t vy, Double_t vz, Double_t time): - fPdgIdx(0), fIdxInEvent(idx),fNPids(0),fPids(0x0),fPidProb(0x0), - fCalcMass(0), - fPx(px), fPy(py),fPz(pz),fE(etot), - fVx(vx), fVy(vy),fVz(vz),fVt(time), - fTrackPoints(0x0),fClusterMap(0x0) -{ -//mormal constructor - SetPdgCode(pdg); - if (GetPDG()) { - fCalcMass = GetPDG()->Mass(); - } else { - Double_t a2 = fE*fE -fPx*fPx -fPy*fPy -fPz*fPz; - if (a2 >= 0) fCalcMass = TMath::Sqrt(a2); - else fCalcMass = -TMath::Sqrt(-a2); - } -} -//______________________________________________________________________________ - -AliHBTParticle::AliHBTParticle(Int_t pdg, Float_t prob, Int_t idx, - Double_t px, Double_t py, Double_t pz, Double_t etot, - Double_t vx, Double_t vy, Double_t vz, Double_t time): - fPdgIdx(0), fIdxInEvent(idx),fNPids(0),fPids(0x0),fPidProb(0x0), - fCalcMass(0), - fPx(px), fPy(py),fPz(pz),fE(etot), - fVx(vx), fVy(vy),fVz(vz),fVt(time), - fTrackPoints(0x0),fClusterMap(0x0) -{ -//mormal constructor - SetPdgCode(pdg,prob); - if (GetPDG()) { - fCalcMass = GetPDG()->Mass(); - } else { - Double_t a2 = fE*fE -fPx*fPx -fPy*fPy -fPz*fPz; - if (a2 >= 0) fCalcMass = TMath::Sqrt(a2); - else fCalcMass = -TMath::Sqrt(-a2); - } -} -//______________________________________________________________________________ -AliHBTParticle::AliHBTParticle(const AliHBTParticle& in): - TObject(in), - fPdgIdx(in.fPdgIdx), fIdxInEvent(in.fIdxInEvent), - fNPids(in.fNPids),fPids(new Int_t[fNPids]),fPidProb(new Float_t[fNPids]), - fCalcMass(in.GetCalcMass()), - fPx(in.Px()),fPy(in.Py()),fPz(in.Pz()),fE(in.Energy()), - fVx(in.Vx()),fVy(in.Vy()),fVz(in.Vz()),fVt(in.T()), - fTrackPoints(0x0), fClusterMap(0x0) -{ - //Copy constructor - for(Int_t i = 0; iClone(); - if (in.fClusterMap) - fClusterMap = (AliHBTClusterMap*)in.fClusterMap->Clone(); -} - -//______________________________________________________________________________ -AliHBTParticle::AliHBTParticle(const TParticle &p,Int_t idx): - fPdgIdx(0), fIdxInEvent(idx), - fNPids(0),fPids(0x0),fPidProb(0x0), - fCalcMass(p.GetCalcMass()), - fPx(p.Px()),fPy(p.Py()),fPz(p.Pz()),fE(p.Energy()), - fVx(p.Vx()),fVy(p.Vy()),fVz(p.Vz()),fVt(p.T()), - fTrackPoints(0x0),fClusterMap(0x0) -{ - //all copied in the initialization - SetPdgCode(p.GetPdgCode()); -} -//______________________________________________________________________________ - -AliHBTParticle::~AliHBTParticle() -{ -//dtor - delete [] fPids; - delete [] fPidProb; - delete fTrackPoints; - delete fClusterMap; -} -//______________________________________________________________________________ - -AliHBTParticle& AliHBTParticle::operator=(const AliHBTParticle& in) -{ -//assigment operator - - fNPids = in.fNPids; - delete [] fPids; - delete [] fPidProb; - Int_t* fPids = new Int_t[fNPids]; - Float_t* fPidProb = new Float_t[fNPids]; - for (Int_t i = 0; i < fNPids;i++) - { - fPids[i] = in.fPids[i]; - fPidProb[i] = in.fPidProb[i]; - } - - fPdgIdx = in.fPdgIdx; - fIdxInEvent = in.fIdxInEvent; - fCalcMass = in.GetCalcMass(); - fPx = in.Px(); - fPy = in.Py(); - fPz = in.Pz(); - fE = in.Energy(); - fVx = in.Vx(); - fVy = in.Vy(); - fVz = in.Vz(); - fVt = in.T(); - - delete fTrackPoints; - fTrackPoints = (in.fTrackPoints)?(AliHBTTrackPoints*)fTrackPoints->Clone():0x0; - - delete fClusterMap; - fClusterMap = (in.fClusterMap)?(AliHBTClusterMap*)in.fClusterMap->Clone():0x0; - - return *this; -} -//______________________________________________________________________________ - -void AliHBTParticle::SetPdgCode(Int_t pdg,Float_t prob) -{ - SetPIDprobability(pdg,prob); - fPdgIdx = GetPidSlot(pdg); -} - -//______________________________________________________________________________ -void AliHBTParticle::SetPIDprobability(Int_t pdg, Float_t prob) -{ -//Sets another pdg code and corresponding probabilty -//Ids are set in decreasing order -//Check if total prbaility is not ivercoming unity is performed -//in case, warning is printed - if (fgDebug > 9) Info("SetPIDprobability","Setting PID %d prob %f",pdg,prob); - - Float_t totprob = 0.0;//sums up probabilities - Int_t idx = GetPidSlot(pdg); - Int_t i; - if (idx > -1) - { - fPidProb[idx] = prob; - for (i = 0; i < fNPids;i++) totprob+=fPidProb[i]; - if (totprob > (1.0+0.000001)) - { - Warning("SetPIDprobability","Total probability greater than unity (%f)",totprob); - } - if (fgDebug > 9) - { - Info("SetPIDprobability","Current Total probability: %f",totprob); - } - return; - } - - Int_t currentpid = GetPdgCode(); - fNPids++; - Float_t* aPidProbNew = new Float_t[fNPids]; - Int_t* aPidsNew = new Int_t[fNPids]; - - for (i = 0; i < fNPids-1;i++)//find a slot - { - if ( fPidProb[i] > prob) - { - if (fgDebug>9) Info("SetPID","Copying entry %d",i); - aPidProbNew[i] = fPidProb[i]; - aPidsNew[i] = fPids[i]; - totprob+=fPidProb[i]; - } - else break; - } - - if (fgDebug > 9) Info("SetPID","Setting new PID on entry %d",i); - aPidProbNew[i] = prob; - aPidsNew[i] = pdg; - totprob+=prob; - - - for (Int_t j = fNPids-1; j > i ;j--)//copy rest of old araays - { - if (fgDebug > 9) Info("SetPID","Copying from old entry %d to new entry %d",j-1,j); - aPidProbNew[j] = fPidProb[j-1]; - aPidsNew[j] = fPids[j-1]; - totprob+=fPidProb[j-1]; - } - - delete [] fPidProb; - delete [] fPids; - - fPidProb = aPidProbNew; - fPids = aPidsNew; - - fPdgIdx = GetPidSlot(currentpid); - if (fPdgIdx == -1) fPdgIdx = 0; - - if (totprob > (1.0+0.000001))//place for numerical error - { - Warning("SetId","Total probability is greater than unity (%f)!!!",totprob); - Print(); - } -} -//______________________________________________________________________________ - -Float_t AliHBTParticle::GetPIDprobability(Int_t pdg) const -{ -//Returns probability that this particle is the type of pdg - Int_t idx = GetPidSlot(pdg); - if (idx < 0) return 0.0;//such pid was not specified for this particle - return fPidProb[idx]; -} -//______________________________________________________________________________ - -const Char_t* AliHBTParticle::GetName() const -{ - //returns name of this particle - static char def[4] = "XXX"; - const TParticlePDG *ap = TDatabasePDG::Instance()->GetParticle(GetPdgCode()); - if (ap) return ap->GetName(); - else return def; -} -//______________________________________________________________________________ - -Int_t AliHBTParticle::GetPidSlot(Int_t pdg) const -{ - //returns position of the given PID in fPids (and fPidProb) array. - if (fPids == 0x0) return -1; - for (Int_t i = 0; i< fNPids; i++) - { - if (fPids[i] == pdg) return i; - } - return -1; -} -//______________________________________________________________________________ - -Int_t AliHBTParticle::GetNthPid(Int_t idx) const -{ - //returns PID sitting on slot idx in fPids - if ( (idx < 0) || (idx >= fNPids) ) - { - Error("GetNthPid","Out Of Bounds"); - return 0; - } - return fPids[idx]; -} -//______________________________________________________________________________ - -Float_t AliHBTParticle::GetNthPidProb(Int_t idx) const +Int_t AliJetParticle::Compare(const TObject *obj) const { - //returns PID sitting on slot idx in fPidProb - if ( (idx < 0) || (idx >= fNPids) ) - { - Error("GetNthPid","Out Of Bounds"); - return 0; - } - return fPidProb[idx]; -} -//______________________________________________________________________________ + Double_t val=((AliJetParticle*)obj)->Pt(); -void AliHBTParticle::Print() const -{ -//prints information about particle - printf("____________________________________________________\n"); - printf("Idx: %d PID: %d Name: ",fIdxInEvent,GetPdgCode()); - TParticlePDG *pdgp = TDatabasePDG::Instance()->GetParticle(GetPdgCode()); - if (pdgp) - { - printf("%s Mass: %f\n",pdgp->GetName(),pdgp->Mass()); - } - else - { - printf("Not known\n"); - } - - printf("Px: %+f Py: %+f Pz: %+f E: %+f Calculated Mass: %f\nVx: %+f Vy: %+f Vz: %+f T: %+f\n", - Px(),Py(),Pz(),Energy(),GetCalcMass(),Vx(),Vy(),Vz(),T()); - - for (Int_t i = 0; i < fNPids; i++) - { - printf("# %d PID: %d Probability %f name ",i,fPids[i],fPidProb[i]); - const TParticlePDG *ap = TDatabasePDG::Instance()->GetParticle(fPids[i]); - if (ap) - { - printf("%s Mass %f\n",ap->GetName(),ap->Mass()); - } - else - { - printf("Not known\n"); - } - } + if(fPt>val) return 1; + else if (fPtReadBuffer(b, this); -// } -// else -// { -// TObject::Streamer(b); -// b >> fPdgIdx; -// b >> fIdxInEvent; -// -// b >> fNPids; -// Int_t* fPids = new Int_t[fNPids]; -// Float_t* fPidProb = new Float_t[fNPids]; -// for (i = 0;i> fPids[i]; -// } -// for (i = 0;i> fPidProb[i]; -// } -// b >> fCalcMass; -// -// b >> fPx; -// b >> fPy; -// b >> fPz; -// b >> fE; -// -// b >> fVx; -// b >> fVy; -// b >> fVz; -// b >> fVt; -// Info("Streamer","Read data"); -// Print(); -// } -// -// b.CheckByteCount(R__s, R__c,AliHBTParticle::IsA()); -// } -// else -// { -// R__c = b.WriteVersion(AliHBTParticle::IsA(), kTRUE); -// TObject::Streamer(b); -// Info("Streamer","Read data"); -// Print(); -// -// b << fPdgIdx; -// b << fIdxInEvent; -// b << fNPids; -// for (i = 0;iGetUID();} + Bool_t IsSortable() const {return kTRUE;} + Int_t Compare(const TObject *obj) const; protected: void Calculate(); //calculate values -- 2.39.3