+++ /dev/null
-#include "AliHBTParticle.h"
-//___________________________________________________________
-/////////////////////////////////////////////////////////////
-//
-// class AliHBTParticle
-//
-// Ali HBT Particle: simplified class TParticle
-// Simplified in order to minimize the size of object
-// - we want to keep a lot of such a objects in memory
-// Additionaly adjusted for HBT Analysies purposes
-// + pointer to Track Points
-// + pointer to Cluster Map(s)
-//
-// Piotr.Skowronski@cern.ch
-//
-/////////////////////////////////////////////////////////////
-#include <TParticle.h>
-#include "AliHBTTrackPoints.h"
-#include "AliHBTClusterMap.h"
-
-ClassImp(AliHBTParticle)
-
-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),fITSTrackPoints(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),fITSTrackPoints(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),fITSTrackPoints(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), fITSTrackPoints(0x0), fClusterMap(0x0)
-{
- //Copy constructor
- for(Int_t i = 0; i<fNPids; i++)
- {
- fPids[i] = in.fPids[i];
- fPidProb[i] = in.fPidProb[i];
- }
-
- if (in.fTrackPoints)
- fTrackPoints = (AliHBTTrackPoints*)in.fTrackPoints->Clone();
- if (in.fITSTrackPoints)
- fITSTrackPoints = (AliHBTTrackPoints*)in.fITSTrackPoints->Clone();
- 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), fITSTrackPoints(0x0), fClusterMap(0x0)
-{
- //all copied in the initialization
- SetPdgCode(p.GetPdgCode());
-}
-//______________________________________________________________________________
-
-AliHBTParticle::~AliHBTParticle()
-{
-//dtor
- delete [] fPids;
- delete [] fPidProb;
- delete fTrackPoints;
- delete fITSTrackPoints;
- 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*)in.fTrackPoints->Clone():0x0;
-
- delete fITSTrackPoints;
- fITSTrackPoints = (in.fTrackPoints)?(AliHBTTrackPoints*)in.fITSTrackPoints->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
-{
- //returns PID sitting on slot idx in fPidProb
- if ( (idx < 0) || (idx >= fNPids) )
- {
- Error("GetNthPid","Out Of Bounds");
- return 0;
- }
- return fPidProb[idx];
-}
-//______________________________________________________________________________
-
-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");
- }
- }
-}
-
-//______________________________________________________________________________
-
-//void AliHBTParticle::Streamer(TBuffer &b)
-//{
-// // Stream all objects in the array to or from the I/O buffer.
-// UInt_t R__s, R__c;
-// Int_t i;
-// if (b.IsReading())
-// {
-// delete [] fPids;
-// delete [] fPidProb;
-//
-// Version_t v = b.ReadVersion(&R__s, &R__c);
-// if (v == 1)
-// {
-// AliHBTParticle::Class()->ReadBuffer(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<fNPids;i++)
-// {
-// b >> fPids[i];
-// }
-// for (i = 0;i<fNPids;i++)
-// {
-// b >> 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;i<fNPids;i++)
-// {
-// b << fPids[i];
-// }
-// {
-// {
-// for (i = 0;i<fNPids;i++)
-// {
-// b << fPidProb[i];
-// }
-// b << fCalcMass;
-//
-// b << fPx;
-// b << fPy;
-// b << fPz;
-// b << fE;
-//
-// b << fVx;
-// b << fVy;
-// b << fVz;
-// b << fVt;
-//
-// b.SetByteCount(R__c, kTRUE);
-// }
-//}
+++ /dev/null
-#ifndef ALIHBTPARTICLE_H
-#define ALIHBTPARTICLE_H
-//___________________________________________________________
-/////////////////////////////////////////////////////////////
-//
-// class AliHBTParticle
-//
-// Ali HBT Particle: simplified class TParticle
-// Simplified in order to minimize the size of object
-// - we want to keep a lot of such a objects in memory
-// Additionaly adjusted for HBT Analysies purposes
-// + pointer to Track Points
-// + pointer to Cluster Map(s)
-//
-// Piotr.Skowronski@cern.ch
-//
-/////////////////////////////////////////////////////////////
-
-#include <TObject.h>
-#include <TLorentzVector.h>
-#include <TMath.h>
-#include <TDatabasePDG.h>
-
-
-class TParticle;
-class AliHBTTrackPoints;
-class AliHBTClusterMap;
-
-class AliHBTParticle : public TObject
-{
-public:
- // ****** constructors and destructor
- AliHBTParticle();
- AliHBTParticle(const AliHBTParticle& in);
-
- 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);
-
- 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);
-
- AliHBTParticle(const TParticle& p,Int_t idx);
-
- virtual ~AliHBTParticle();
-
- AliHBTParticle& operator=(const AliHBTParticle& in);
-
- void SetPIDprobability(Int_t pdg, Float_t prob = 1.0);
- Float_t GetPIDprobability(Int_t pdg) const;
-
- Int_t GetPdgCode () const { return (fPids)?fPids[fPdgIdx]:0;}
- Int_t GetPid () const { return GetPdgCode();}
- Float_t GetPidProb () const { return (fPidProb)?fPidProb[fPdgIdx]:0;}
-
- Int_t GetUID () const { return fIdxInEvent;}
- Int_t GetNumberOfPids () const { return fNPids;}
- Int_t GetNthPid (Int_t idx) const;
- Float_t GetNthPidProb (Int_t idx) const;
-
- void SetPdgCode(Int_t pdg, Float_t prob = 1.0);
- Double_t GetCalcMass () const { return fCalcMass; }
- Double_t GetMass () { return (GetPDG())?GetPDG()->Mass():-1.;}
-
- TParticlePDG* GetPDG (){return TDatabasePDG::Instance()->GetParticle(GetPdgCode());}
-
- Int_t Beauty () { return GetPDG()->Beauty(); }
- Int_t Charm () { return GetPDG()->Charm(); }
- Int_t Strangeness () { return GetPDG()->Strangeness();}
- void ProductionVertex(TLorentzVector &v) const { v.SetXYZT(fVx,fVy,fVz,fVt);}
-
-
- Double_t Vx () const { return fVx;}
- Double_t Vy () const { return fVy;}
- Double_t Vz () const { return fVz;}
- Double_t T () const { return fVt;}
-
- Double_t Px () const { return fPx; } //X coordinate of the momentum
- Double_t Py () const { return fPy; } //Y coordinate of the momentum
- Double_t Pz () const { return fPz; } //Z coordinate of the momentum
- Double_t P () const //momentum
- { return TMath::Sqrt(fPx*fPx+fPy*fPy+fPz*fPz); }
-
- void Momentum(TLorentzVector &v) const { v.SetPxPyPzE(fPx,fPy,fPz,fE);}
-
- Double_t Pt () const //transverse momentum
- { return TMath::Sqrt(fPx*fPx+fPy*fPy); }
- Double_t Energy() const { return fE; }
-
- //Pseudo Rapidity
- Double_t Eta () const { if (P() != fPz) return 0.5*TMath::Log((P()+fPz)/(P()-fPz));
- else return 1.e30;}
-
- //Rapidity
- Double_t Y () const { if (fE != fPz) return 0.5*TMath::Log((fE+fPz)/(fE-fPz));
- else return 1.e30;}
-
- Double_t Phi () const { return TMath::Pi()+TMath::ATan2(-fPy,-fPx); }
-
- Double_t Theta () const { return (fPz==0)?TMath::PiOver2():TMath::ACos(fPz/P()); }
-
- // setters
-
- void SetMomentum(Double_t px, Double_t py, Double_t pz, Double_t e)
- {fPx=px; fPy=py; fPz=pz; fE=e;}
- void SetMomentum(const TLorentzVector& p)
- {SetMomentum(p.Px(),p.Py(),p.Pz(),p.Energy());}
-
- void SetProductionVertex(Double_t vx, Double_t vy, Double_t vz, Double_t t)
- {fVx=vx; fVy=vy; fVz=vz; fVt=t;}
- void SetProductionVertex(const TLorentzVector& v)
- {SetProductionVertex(v.X(),v.Y(),v.Z(),v.T());}
- void SetCalcMass(Double_t mass) {fCalcMass = mass;}
-
- void SetUID(Int_t id){fIdxInEvent = id;}
-
- const Char_t* GetName() const;
- void Print() const;
-
- void SetTrackPoints(AliHBTTrackPoints* tpts){fTrackPoints = tpts;}
- AliHBTTrackPoints* GetTrackPoints() const {return fTrackPoints;}
-
- void SetITSTrackPoints(AliHBTTrackPoints* tpts){fITSTrackPoints = tpts;}
- AliHBTTrackPoints* GetITSTrackPoints() const {return fITSTrackPoints;}
-
- void SetClusterMap(AliHBTClusterMap* cm){fClusterMap = cm;}
- AliHBTClusterMap* GetClusterMap() const {return fClusterMap;}
-
- static void SetDebug(Int_t dbg=1){fgDebug=dbg;}
- static Int_t GetDebug(){return fgDebug;}
-
-protected:
- Int_t GetPidSlot(Int_t pdg) const;//returns position of the given PID in fPids (and fPidProb) array.
-
-private:
- Char_t fPdgIdx; // index of PDG code of the particle in fPids
- Int_t fIdxInEvent; // index of a particle: the same particle can appear in the event
- // many times with different pid's. Idx allows to check that they are the same particles
- Int_t fNPids; // number of non-zero proboble Pids
- Int_t *fPids; // [fNPids] Array with PIDs
- Float_t *fPidProb; // [fNPids] PIDs probabilities
- Double_t fCalcMass; // Calculated mass
-
- Double_t fPx; // x component of momentum
- Double_t fPy; // y component of momentum
- Double_t fPz; // z component of momentum
- Double_t fE; // Energy
-
- Double_t fVx; // x of production vertex
- Double_t fVy; // y of production vertex
- Double_t fVz; // z of production vertex
- Double_t fVt; // t of production vertex
-
- AliHBTTrackPoints* fTrackPoints; // track positions along trajectory - used by anti-merging cut
- AliHBTTrackPoints* fITSTrackPoints; // track position at first pixels
-
- AliHBTClusterMap* fClusterMap; // bit map of cluters occupation; 1 if has cluter on given layer/padrow/...
-
- static Int_t fgDebug; //debug printout level
- ClassDef(AliHBTParticle,4) // TParticle vertex particle information
-};
-
-#endif
+++ /dev/null
-#include "AliHBTParticleCut.h"
-//__________________________________________________________________________
-////////////////////////////////////////////////////////////////////////////
-// //
-// class AliHBTParticleCut //
-// //
-// Classes for single particle cuts //
-// User should use only AliHBTParticleCut, eventually //
-// EmptyCut which passes all particles //
-// There is all interface for setting cuts on all particle properties //
-// The main method is Pass - which returns //
-// True to reject particle //
-// False in case it meets all the criteria of the given cut //
-// //
-// User should create (and also destroy) cuts himself //
-// and then pass them to the Analysis And Function by a proper method //
-// //
-// //
-// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html //
-// resonsible: Piotr Skowronski@cern.ch //
-// //
-////////////////////////////////////////////////////////////////////////////
-
-#include <Riostream.h>
-
-
-ClassImp(AliHBTParticleCut)
-const Int_t AliHBTParticleCut::fgkMaxCuts = 50;
-/******************************************************************/
-
-AliHBTParticleCut::AliHBTParticleCut():
- fCuts(new AliHbtBaseCut* [fgkMaxCuts]),//last property in the property enum => defines number of properties
- fNCuts(0),
- fPID(0)
-{
- //default ctor
-}
-/******************************************************************/
-
-AliHBTParticleCut::AliHBTParticleCut(const AliHBTParticleCut& in):
- TObject(in)
-{
- //cpy ctor
- fCuts = new AliHbtBaseCut* [fgkMaxCuts];//last property in the property
- //property enum => defines number of properties
- fNCuts = in.fNCuts;
- fPID = in.fPID;
- for (Int_t i = 0;i<fNCuts;i++)
- {
- fCuts[i] = (AliHbtBaseCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
- }
-}
-/******************************************************************/
-AliHBTParticleCut& AliHBTParticleCut::operator=(const AliHBTParticleCut& in)
-{
- //assigment operator
- Info("operator=","operator=operator=operator=operator=\noperator=operator=operator=operator=");
- for (Int_t i = 0;i<fNCuts;i++)
- {
- delete fCuts[i];
- }
-
- fNCuts = in.fNCuts;
- fPID = in.fPID;
- for (Int_t i = 0;i<fNCuts;i++)
- {
- fCuts[i] = (AliHbtBaseCut*)in.fCuts[i]->Clone();//create new object (clone) and rember pointer to it
- }
- return *this;
-}
-
-/******************************************************************/
-AliHBTParticleCut::~AliHBTParticleCut()
-{
- //dtor
- for (Int_t i = 0;i<fNCuts;i++)
- {
- delete fCuts[i];
- }
- delete []fCuts;
-}
-/******************************************************************/
-
-Bool_t AliHBTParticleCut::Pass(AliHBTParticle* p) const
-{
-//method checks all the cuts that are set (in the list)
-//If any of the baseCuts rejects particle False(rejection) is returned
-
- if(!p)
- {
- Warning("Pass()","No Pasaran! We never accept NULL pointers");
- return kTRUE;
- }
- if( (p->GetPdgCode() != fPID) && ( fPID != 0)) return kTRUE;
-
- for (Int_t i = 0;i<fNCuts;i++)
- {
- if ( (fCuts[i]->Pass(p)) ) return kTRUE; //if one of the cuts rejects, then reject
- }
- return kFALSE;
-}
-/******************************************************************/
-
-void AliHBTParticleCut::AddBasePartCut(AliHbtBaseCut* basecut)
-{
- //adds the base pair cut (cut on one value)
-
- if (!basecut) return;
- if( fNCuts == (fgkMaxCuts-1) )
- {
- Warning("AddBasePartCut","Not enough place for another cut");
- return;
- }
- fCuts[fNCuts++]=basecut;
-
-}
-
-/******************************************************************/
-AliHbtBaseCut* AliHBTParticleCut::FindCut(AliHBTCutProperty property)
-{
- //returns pointer to the cut checking the given property
- for (Int_t i = 0;i<fNCuts;i++)
- {
- if (fCuts[i]->GetProperty() == property)
- return fCuts[i]; //we found the cut we were searching for
- }
-
- return 0x0; //we did not found this cut
-
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetMomentumRange(Double_t min, Double_t max)
-{
- //Sets momentum range
- AliHBTMomentumCut* cut= (AliHBTMomentumCut*)FindCut(kHbtP);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTMomentumCut(min,max);
-}
-/******************************************************************/
-
-
-void AliHBTParticleCut::SetPtRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHBTPtCut* cut= (AliHBTPtCut*)FindCut(kHbtPt);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTPtCut(min,max);
-
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetEnergyRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHBTEnergyCut* cut= (AliHBTEnergyCut*)FindCut(kHbtE);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTEnergyCut(min,max);
-
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetRapidityRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtRapidity);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTRapidityCut(min,max);
-
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetPseudoRapidityRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtPseudoRapidity);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTPseudoRapidityCut(min,max);
-
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetPxRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtPx);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTPxCut(min,max);
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetPyRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtPy);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTPyCut(min,max);
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetPzRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtPz);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTPzCut(min,max);
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetPhiRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtPhi);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTPhiCut(min,max);
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetThetaRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtTheta);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTThetaCut(min,max);
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetVxRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtVx);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTVxCut(min,max);
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetVyRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtVy);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTVyCut(min,max);
-}
-/******************************************************************/
-
-void AliHBTParticleCut::SetVzRange(Double_t min, Double_t max)
-{
- //name self descriptive
- AliHbtBaseCut* cut = FindCut(kHbtVz);
- if(cut) cut->SetRange(min,max);
- else fCuts[fNCuts++] = new AliHBTVzCut(min,max);
-}
-
-/******************************************************************/
-void AliHBTParticleCut::Streamer(TBuffer &b)
-{
- // Stream all objects in the array to or from the I/O buffer.
-
- UInt_t R__s, R__c;
- if (b.IsReading())
- {
- Int_t i;
- for (i = 0;i<fNCuts;i++) delete fCuts[i];
- b.ReadVersion(&R__s, &R__c);
- TObject::Streamer(b);
- b >> fPID;
- b >> fNCuts;
- for (i = 0;i<fNCuts;i++)
- {
- b >> fCuts[i];
- }
- b.CheckByteCount(R__s, R__c,AliHBTParticleCut::IsA());
- }
- else
- {
- R__c = b.WriteVersion(AliHBTParticleCut::IsA(), kTRUE);
- TObject::Streamer(b);
- b << fPID;
- b << fNCuts;
- for (Int_t i = 0;i<fNCuts;i++)
- {
- b << fCuts[i];
- }
- b.SetByteCount(R__c, kTRUE);
- }
-}
-/******************************************************************/
-
-void AliHBTParticleCut::Print(void) const
-{
- //prints all information about the cut to stdout
- cout<<"Printing AliHBTParticleCut, this = "<<this<<endl;
- cout<<"fPID "<<fPID<<endl;
- cout<<"fNCuts "<<fNCuts <<endl;
- for (Int_t i = 0;i<fNCuts;i++)
- {
- cout<<" fCuts["<<i<<"] "<<fCuts[i]<<endl<<" ";
- fCuts[i]->Print();
- }
-}
-
-/******************************************************************/
-/******************************************************************/
-
-ClassImp(AliHBTEmptyParticleCut)
-void AliHBTEmptyParticleCut::Streamer(TBuffer &b)
- {
- //stramer
- AliHBTParticleCut::Streamer(b);
- }
-/******************************************************************/
-/******************************************************************/
-/******************************************************************/
-
-/******************************************************************/
-/******************************************************************/
-/******************************************************************/
-
-ClassImp(AliHbtBaseCut)
-void AliHbtBaseCut::Print(void) const
-{
- // prints the information anout the base cut to stdout
- cout<<"fMin="<<fMin <<", fMax=" <<fMax<<" ";
- PrintProperty();
-}
-/******************************************************************/
-
-void AliHbtBaseCut::PrintProperty(void) const
-{
- //prints the property name
- switch (fProperty)
- {
- case kHbtP:
- cout<<"kHbtP"; break;
- case kHbtPt:
- cout<<"kHbtPt"; break;
- case kHbtE:
- cout<<"kHbtE"; break;
- case kHbtRapidity:
- cout<<"kHbtRapidity"; break;
- case kHbtPseudoRapidity:
- cout<<"kHbtPseudoRapidity"; break;
- case kHbtPx:
- cout<<"kHbtPx"; break;
- case kHbtPy:
- cout<<"kHbtPy"; break;
- case kHbtPz:
- cout<<"kHbtPz"; break;
- case kHbtPhi:
- cout<<"kHbtPhi"; break;
- case kHbtTheta:
- cout<<"kHbtTheta"; break;
- case kHbtVx:
- cout<<"kHbtVx"; break;
- case kHbtVy:
- cout<<"kHbtVy"; break;
- case kHbtVz:
- cout<<"kHbtVz"; break;
- case kHbtNone:
- cout<<"kHbtNone"; break;
- default:
- cout<<"Property Not Found";
- }
- cout<<endl;
-}
-ClassImp( AliHBTMomentumCut )
-
-ClassImp( AliHBTPtCut )
-ClassImp( AliHBTEnergyCut )
-ClassImp( AliHBTRapidityCut )
-ClassImp( AliHBTPseudoRapidityCut )
-ClassImp( AliHBTPxCut )
-ClassImp( AliHBTPyCut )
-ClassImp( AliHBTPzCut )
-ClassImp( AliHBTPhiCut )
-ClassImp( AliHBTThetaCut )
-ClassImp( AliHBTVxCut )
-ClassImp( AliHBTVyCut )
-ClassImp( AliHBTVzCut )
-
-ClassImp( AliHBTPIDCut )
-
-ClassImp( AliHBTLogicalOperCut )
-
-AliHBTLogicalOperCut::AliHBTLogicalOperCut():
- AliHbtBaseCut(-10e10,10e10,kHbtNone),
- fFirst(new AliHBTDummyBaseCut),
- fSecond(new AliHBTDummyBaseCut)
-{
- //ctor
-}
-/******************************************************************/
-
-AliHBTLogicalOperCut::AliHBTLogicalOperCut(AliHbtBaseCut* first, AliHbtBaseCut* second):
- AliHbtBaseCut(-10e10,10e10,kHbtNone),
- fFirst((first)?(AliHbtBaseCut*)first->Clone():0x0),
- fSecond((second)?(AliHbtBaseCut*)second->Clone():0x0)
-{
- //ctor
- if ( (fFirst && fSecond) == kFALSE)
- {
- Fatal("AliHBTLogicalOperCut","One of parameters is NULL!");
- }
-}
-/******************************************************************/
-
-AliHBTLogicalOperCut::~AliHBTLogicalOperCut()
-{
- //destructor
- delete fFirst;
- delete fSecond;
-}
-/******************************************************************/
-
-Bool_t AliHBTLogicalOperCut::AliHBTDummyBaseCut::Pass(AliHBTParticle* /*part*/) const
-{
- //checks if particles passes properties defined by this cut
- Warning("Pass","You are using dummy base cut! Probobly some logical cut is not set up properly");
- return kFALSE;//accept
-}
-/******************************************************************/
-
-void AliHBTLogicalOperCut::Streamer(TBuffer &b)
-{
- // Stream all objects in the array to or from the I/O buffer.
- UInt_t R__s, R__c;
- if (b.IsReading())
- {
- delete fFirst;
- delete fSecond;
- fFirst = 0x0;
- fSecond = 0x0;
-
- b.ReadVersion(&R__s, &R__c);
- TObject::Streamer(b);
- b >> fFirst;
- b >> fSecond;
- b.CheckByteCount(R__s, R__c,AliHBTLogicalOperCut::IsA());
- }
- else
- {
- R__c = b.WriteVersion(AliHBTLogicalOperCut::IsA(), kTRUE);
- TObject::Streamer(b);
- b << fFirst;
- b << fSecond;
- b.SetByteCount(R__c, kTRUE);
- }
-}
-
-/******************************************************************/
-ClassImp(AliHBTOrCut)
-
-Bool_t AliHBTOrCut::Pass(AliHBTParticle * p) const
-{
- //returns true when rejected
- //AND operation is a little bit misleading but is correct
- //User wants to build logical cuts with natural (positive) logic
- //while HBTAN use inernally reverse (returns true when rejected)
- if (fFirst->Pass(p) && fSecond->Pass(p)) return kTRUE;//rejected (both rejected, returned kTRUE)
- return kFALSE;//accepted, at least one accepted (returned kFALSE)
-}
-/******************************************************************/
-
-ClassImp(AliHBTAndCut)
-
-Bool_t AliHBTAndCut::Pass(AliHBTParticle * p) const
-{
- //returns true when rejected
- //OR operation is a little bit misleading but is correct
- //User wants to build logical cuts with natural (positive) logic
- //while HBTAN use inernally reverse (returns true when rejected)
- if (fFirst->Pass(p) || fSecond->Pass(p)) return kTRUE;//rejected (any of two rejected(returned kTRUE) )
- return kFALSE;//accepted (both accepted (returned kFALSE))
-}
-/******************************************************************/
+++ /dev/null
-#ifndef ALIHBTPARTICLECUT_H
-#define ALIHBTPARTICLECUT_H
-//__________________________________________________________________________
-////////////////////////////////////////////////////////////////////////////
-// //
-// class AliHBTParticleCut //
-// //
-// Classes for single particle cuts //
-// User should use only AliHBTParticleCut, eventually //
-// EmptyCut which passes all particles //
-// There is all interface for setting cuts on all particle properties //
-// The main method is Pass - which returns //
-// True to reject particle //
-// False in case it meets all the criteria of the given cut //
-// //
-// User should create (and also destroy) cuts himself //
-// and then pass them to the Analysis And Function by a proper method //
-// //
-// //
-// more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html //
-// resonsible: Piotr Skowronski@cern.ch //
-// //
-////////////////////////////////////////////////////////////////////////////
-
-
-#include <TObject.h>
-#include "AliHBTParticle.h"
-
-
-class AliHBTEmptyParticleCut;
-class AliHBTParticleCut;
-class AliHBTPairCut;
-class AliHBTPair;
-class AliHbtBaseCut;
-
-
-/******************************************************************/
-/******************************************************************/
-/******************************************************************/
-
-enum AliHBTCutProperty
- {
-//codes particle property
- kHbtP, //Momentum
- kHbtPt, //Transverse momentum
- kHbtE, //Energy
- kHbtRapidity, //
- kHbtPseudoRapidity,
- kHbtPx, //X coAnddinate of the momentum
- kHbtPy, //Y coAnddinate of the momentum
- kHbtPz, //Z coAnddinate of the momentum
- kHbtPhi,//angle
- kHbtTheta,//angle
- kHbtVx, // vertex X coAnddinate
- kHbtVy, // vertex Y coAnddinate
- kHbtVz, // vertex Z coAnddinate
- kHbtPid, // vertex Z coAnddinate
-//_____________________________
- kHbtNone
- };
-
-/******************************************************************/
-/******************************************************************/
-/******************************************************************/
-
-class AliHBTParticleCut: public TObject
-{
-//Class describing cut on pairs of particles
- public:
- AliHBTParticleCut();
- AliHBTParticleCut(const AliHBTParticleCut& in);
- virtual ~AliHBTParticleCut();
- AliHBTParticleCut& operator = (const AliHBTParticleCut& in);
-
- virtual Bool_t Pass(AliHBTParticle* p) const;
- Bool_t IsEmpty() const {return kFALSE;}
-
- void AddBasePartCut(AliHbtBaseCut* basecut);
-
- Int_t GetPID() const { return fPID;}
- void SetPID(Int_t pid){fPID=pid;}
- void SetMomentumRange(Double_t min, Double_t max);
- void SetPRange(Double_t min, Double_t max){SetMomentumRange(min,max);}
- void SetPtRange(Double_t min, Double_t max);
- void SetEnergyRange(Double_t min, Double_t max);
- void SetRapidityRange(Double_t min, Double_t max);
- void SetYRange(Double_t min, Double_t max){SetRapidityRange(min,max);}
- void SetPseudoRapidityRange(Double_t min, Double_t max);
- void SetPxRange(Double_t min, Double_t max);
- void SetPyRange(Double_t min, Double_t max);
- void SetPzRange(Double_t min, Double_t max);
- void SetPhiRange(Double_t min, Double_t max);
- void SetThetaRange(Double_t min, Double_t max);
- void SetVxRange(Double_t min, Double_t max);
- void SetVyRange(Double_t min, Double_t max);
- void SetVzRange(Double_t min, Double_t max);
-
- void Print(void) const;
- protected:
-
- AliHbtBaseCut* FindCut(AliHBTCutProperty property);
-
- AliHbtBaseCut ** fCuts;//! Array with cuts
- Int_t fNCuts; //number of base cuts stored in fCuts
-
- Int_t fPID; //particle PID - if=0 (rootino) all pids are accepted
-
- private:
- static const Int_t fgkMaxCuts; //Size of the fCuts array
-
- ClassDef(AliHBTParticleCut,1)
-};
-/******************************************************************/
-/******************************************************************/
-/******************************************************************/
-
-class AliHBTEmptyParticleCut: public AliHBTParticleCut
-{
-//Empty - it passes possitively all particles - it means returns always False
-//Class describing cut on pairs of particles
- public:
- AliHBTEmptyParticleCut(){};
- virtual ~AliHBTEmptyParticleCut(){};
-
- Bool_t Pass(AliHBTParticle*) const {return kFALSE;} //accept everything <<CAN NOT BE const!!!!>>
- Bool_t IsEmpty() const {return kTRUE;}
-
- ClassDef(AliHBTEmptyParticleCut,1)
-
-};
-
-/******************************************************************/
-/******************************************************************/
-/******************************************************************/
-
-class AliHbtBaseCut: public TObject
- {
- //This class defines the range of some property - pure virtual
- //Property is coded by AliHBTCutTypes type
-
- public:
-
- AliHbtBaseCut(Double_t min = 0.0, Double_t max = 0.0,AliHBTCutProperty prop = kHbtNone):
- fProperty(prop),fMin(min),fMax(max){}
-
- virtual ~AliHbtBaseCut(){}
-
- virtual Bool_t Pass(AliHBTParticle *p) const;
-
- void SetRange(Double_t min, Double_t max){fMin = min; fMax = max;}
-
- void SetMinimum(Double_t min){fMin = min;}
- void SetMaximum(Double_t max){fMax = max;}
-
- Double_t GetMinimum() const {return fMin;}
- Double_t GetMaximum() const {return fMax;}
-
- AliHBTCutProperty GetProperty() const {return fProperty;}
- virtual void Print(void) const;
-
- protected:
- virtual Double_t GetValue(AliHBTParticle *) const = 0;
-
- AliHBTCutProperty fProperty; //property that this cut describes
- Double_t fMin;//minimum value
- Double_t fMax;//maximum value
-
- private:
- void PrintProperty(void) const;
- ClassDef(AliHbtBaseCut,1)
-
- };
-
-inline Bool_t
-AliHbtBaseCut::Pass(AliHBTParticle *p) const
-{
- //cjecks if particle property fits in range
- if ( (GetValue(p) < fMin) || (GetValue(p) > fMax ) ) return kTRUE; //rejected
- else return kFALSE; //accepted
-}
-/******************************************************************/
-/******************************************************************/
-/******************************************************************/
-
-
-class AliHBTMomentumCut: public AliHbtBaseCut
- {
- public:
- AliHBTMomentumCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtP){}
- virtual ~AliHBTMomentumCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->P();}
- ClassDef(AliHBTMomentumCut,1)
- };
-
-class AliHBTPtCut: public AliHbtBaseCut
- {
- public:
- AliHBTPtCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPt){}
- virtual ~AliHBTPtCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Pt();}
- ClassDef(AliHBTPtCut,1)
- };
-
-
-class AliHBTEnergyCut: public AliHbtBaseCut
- {
- public:
- AliHBTEnergyCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtE){}
- virtual ~AliHBTEnergyCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const {return p->Energy();}
- ClassDef(AliHBTEnergyCut,1)
- };
-
-class AliHBTRapidityCut: public AliHbtBaseCut
- {
- public:
- AliHBTRapidityCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtRapidity){}
- virtual ~AliHBTRapidityCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Y();}
- ClassDef(AliHBTRapidityCut,1)
- };
-
-class AliHBTPseudoRapidityCut: public AliHbtBaseCut
- {
- public:
- AliHBTPseudoRapidityCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPseudoRapidity){}
- virtual ~AliHBTPseudoRapidityCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Eta();}
- ClassDef(AliHBTPseudoRapidityCut,1)
- };
-
-class AliHBTPxCut: public AliHbtBaseCut
- {
- public:
- AliHBTPxCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPx){}
- virtual ~AliHBTPxCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Px();}
- ClassDef(AliHBTPxCut,1)
- };
-
-class AliHBTPyCut: public AliHbtBaseCut
- {
- public:
- AliHBTPyCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPy){}
- virtual ~AliHBTPyCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Py();}
- ClassDef(AliHBTPyCut,1)
- };
-
-
-class AliHBTPzCut: public AliHbtBaseCut
- {
- public:
- AliHBTPzCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPz){}
- virtual ~AliHBTPzCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Pz();}
- ClassDef(AliHBTPzCut,1)
- };
-
-class AliHBTPhiCut: public AliHbtBaseCut
- {
- public:
- AliHBTPhiCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtPhi){}
- virtual ~AliHBTPhiCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Phi();}
- ClassDef(AliHBTPhiCut,1)
-
- };
-
-class AliHBTThetaCut: public AliHbtBaseCut
- {
- public:
- AliHBTThetaCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtTheta){}
- virtual ~AliHBTThetaCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Theta();}
- ClassDef(AliHBTThetaCut,1)
-
- };
-
-class AliHBTVxCut: public AliHbtBaseCut
- {
- //Cut of the X coAnddinate of the vertex position
- public:
- AliHBTVxCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtVx){}
- virtual ~AliHBTVxCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Vx();} //retruns value of the vertex
- ClassDef(AliHBTVxCut,1)
-
- };
-
-
-class AliHBTVyCut: public AliHbtBaseCut
- {
- //Cut of the X coAnddinate of the vertex position
- public:
- AliHBTVyCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtVy){}
- virtual ~AliHBTVyCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Vy();} //retruns value of the vertex
- ClassDef(AliHBTVyCut,1)
-
- };
-
-class AliHBTVzCut: public AliHbtBaseCut
- {
- //Cut of the X coAnddinate of the vertex position
- public:
- AliHBTVzCut(Double_t min = 0.0, Double_t max = 0.0):AliHbtBaseCut(min,max,kHbtVz){}
- virtual ~AliHBTVzCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->Vz();} //retruns value of the vertex
-
- ClassDef(AliHBTVzCut,1)
-
- };
-
-class AliHBTPIDCut: public AliHbtBaseCut
- {
- public:
- AliHBTPIDCut():AliHbtBaseCut(0.0,0.0,kHbtPid),fPID(0){}
- AliHBTPIDCut(Int_t pid, Double_t min = 0.0, Double_t max = 1.0):AliHbtBaseCut(min,max,kHbtPid),fPID(pid){}
- virtual ~AliHBTPIDCut(){}
- protected:
- Double_t GetValue(AliHBTParticle * p)const{return p->GetPIDprobability(fPID);}
- Int_t fPID; //pid of particle that the pid is set
- ClassDef(AliHBTPIDCut,1)
- };
-//___________________________________________________
-/////////////////////////////////////////////////////
-// //
-// class AliHBTLogicalOperCut //
-// //
-// This cut is base class fAnd class that perfAndms //
-// logical operations on cuts //
-// //
-/////////////////////////////////////////////////////
-class AliHBTLogicalOperCut: public AliHbtBaseCut
- {
- public:
- AliHBTLogicalOperCut();
- AliHBTLogicalOperCut(AliHbtBaseCut* first, AliHbtBaseCut* second);
- virtual ~AliHBTLogicalOperCut();
- protected:
- Double_t GetValue(AliHBTParticle * /*part*/) const {MayNotUse("GetValue");return 0.0;}
-
- AliHbtBaseCut* fFirst; //second cut
- AliHbtBaseCut* fSecond; //first cut
- private:
- class AliHBTDummyBaseCut: public AliHbtBaseCut
- {
- Double_t GetValue(AliHBTParticle * /*part*/) const {return 0.0;}
- Bool_t Pass(AliHBTParticle* /*part*/) const;
- };
-
- ClassDef(AliHBTLogicalOperCut,1)
- };
-
-class AliHBTOrCut: public AliHBTLogicalOperCut
-{
- public:
- AliHBTOrCut(){}
- AliHBTOrCut(AliHbtBaseCut* first, AliHbtBaseCut* second):AliHBTLogicalOperCut(first,second){}
- virtual ~AliHBTOrCut(){}
- Bool_t Pass(AliHBTParticle *p) const;
- ClassDef(AliHBTOrCut,1)
-};
-
-class AliHBTAndCut: public AliHBTLogicalOperCut
-{
- public:
- AliHBTAndCut(){}
- AliHBTAndCut(AliHbtBaseCut* first, AliHbtBaseCut* second):AliHBTLogicalOperCut(first,second){}
- virtual ~AliHBTAndCut(){}
- Bool_t Pass(AliHBTParticle *p) const;
- ClassDef(AliHBTAndCut,1)
-};
-
-#endif
#pragma link off all functions;
#pragma link C++ class AliHBTAnalysis+;
-#pragma link C++ class AliHBTParticle+;
#pragma link C++ class AliHBTPair+;
-#pragma link C++ class AliHBTEvent+;
-#pragma link C++ class AliHBTRun+;
-#pragma link C++ class AliHBTEventBuffer+;
#pragma link C++ class AliHBTFunction+;
#pragma link C++ class AliHBTMonitorFunction+;
#pragma link C++ class AliHBTMonTwoParticleFctn2D+;
#pragma link C++ class AliHBTMonTwoParticleFctn3D+;
-#pragma link C++ class AliHBTParticleCut-;
-#pragma link C++ class AliHBTEmptyParticleCut-;
-#pragma link C++ class AliHbtBaseCut+;
-
-#pragma link C++ class AliHBTMomentumCut+;
-#pragma link C++ class AliHBTPtCut+;
-#pragma link C++ class AliHBTEnergyCut+;
-#pragma link C++ class AliHBTRapidityCut+;
-#pragma link C++ class AliHBTPseudoRapidityCut+;
-#pragma link C++ class AliHBTPxCut+;
-#pragma link C++ class AliHBTPyCut+;
-#pragma link C++ class AliHBTPzCut+;
-#pragma link C++ class AliHBTPhiCut+;
-#pragma link C++ class AliHBTThetaCut+;
-#pragma link C++ class AliHBTVxCut+;
-#pragma link C++ class AliHBTVyCut+;
-#pragma link C++ class AliHBTVzCut+;
-#pragma link C++ class AliHBTPIDCut+;
-#pragma link C++ class AliHBTLogicalOperCut-;
-#pragma link C++ class AliHBTAndCut+;
-#pragma link C++ class AliHBTOrCut+;
-
-#pragma link C++ class AliHBTReader+;
-#pragma link C++ class AliHBTReaderESD+;
-#pragma link C++ class AliHBTReaderTPC+;
-#pragma link C++ class AliHBTReaderITSv1+;
-#pragma link C++ class AliHBTReaderITSv2+;
-#pragma link C++ class AliHBTReaderKineTree+;
-#pragma link C++ class AliHBTReaderInternal+;
-
-#pragma link C++ class AliHBTTrackPoints+;
-#pragma link C++ class AliHBTClusterMap+;
-
#pragma link C++ class AliHBTQInvCorrelFctn+;
#pragma link C++ class AliHBTOutSideLongFctn+;
#pragma link C++ class AliHBTTwoKStarCorrelFctn+;
SRCS = AliHBTWeights.cxx AliHBTCrab.cxx AliHBTAnalysis.cxx \
-AliHBTReader.cxx AliHBTReaderKineTree.cxx \
-AliHBTReaderESD.cxx AliHBTReaderInternal.cxx \
-AliHBTReaderTPC.cxx \
-AliHBTReaderITSv1.cxx AliHBTReaderITSv2.cxx \
-AliHBTParticle.cxx AliHBTParticleCut.cxx \
AliHBTPair.cxx \
-AliHBTEvent.cxx AliHBTRun.cxx \
AliHBTFunction.cxx AliHBTCorrelFctn.cxx \
AliHBTMonitorFunction.cxx AliHBTTwoTrackEffFctn.cxx \
AliHBTQResolutionFctns.cxx AliHBTQDistributionFctns.cxx \
AliHBTMonDistributionFctns.cxx AliHBTMonResolutionFctns.cxx \
AliHBTLLWeights.cxx AliHBTWeightFctn.cxx \
AliHBTWeightsPID.cxx AliHBTWeightTheorFctn.cxx \
-AliHBTPositionRandomizer.cxx AliHBTEventBuffer.cxx \
-AliHBTCorrFitFctn.cxx \
-AliHBTCorrectQInvCorrelFctn.cxx AliHBTCorrectOSLCorrelFctn.cxx \
-AliHBTTrackPoints.cxx AliHBTClusterMap.cxx \
-AliHBTPIDPurityFctns.cxx
+AliHBTPositionRandomizer.cxx \
+AliHBTCorrFitFctn.cxx AliHBTPIDPurityFctns.cxx \
+AliHBTCorrectQInvCorrelFctn.cxx AliHBTCorrectOSLCorrelFctn.cxx
+
FSRCS = fsiini.F fsiw.F led_bldata.F ltran12.F