ROOT logo
AliRoot » PWGPP » EVCHAR » AliTrackletAlg

class AliTrackletAlg: public AliTrackleter


        Implementation of the ITS-SPD trackleter class
 Clone version of the AliITSMultReconstructor class (October 2010)
 that can be used in an AliAnalysisTask

 Support and development:
         Domenico Elia, Maria Nicassio (INFN Bari)
         Domenico.Elia@ba.infn.it, Maria.Nicassio@ba.infn.it


Function Members (Methods)

public:
AliTrackletAlg()
virtual~AliTrackletAlg()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Bool_tCanBeElectron(const AliESDtrack* trc) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
voidCreateMultiplicityObject()
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidFindTracklets(const Float_t* vtx)
voidFlagClustersInOverlapRegions(Int_t ic1, Int_t ic2)
voidFlagIfSecondary(AliESDtrack* track, const AliVertex* vtx)
voidFlagTrackClusters(Int_t id)
voidFlagV0s(const AliESDVertex* vtx)
Float_t*GetCluster(Int_t n)
Float_t*GetClusterLayer1(Int_t n)
Float_t*GetClusterLayer2(Int_t n)
Float_tGetCutChi2cGamma() const
Float_tGetCutChi2cK0() const
Float_tGetCutDCArz() const
Float_tGetCutGammaSFromDecay() const
Float_tGetCutK0SFromDecay() const
Float_tGetCutMassGamma() const
Float_tGetCutMassGammaNSigma() const
Float_tGetCutMassK0() const
Float_tGetCutMassK0NSigma() const
Float_tGetCutMaxDCA() const
Float_tGetCutMaxDCADauther() const
Float_tGetCutMinElectronProbESD() const
Float_tGetCutMinElectronProbTPC() const
Float_tGetCutMinP() const
Float_tGetCutMinPointAngle() const
Float_tGetCutMinRGamma() const
Float_tGetCutMinRK0() const
Float_tGetCutPxDrSPDin() const
Float_tGetCutPxDrSPDout() const
Float_tGetCutPxDz() const
AliITSDetTypeRec*GetDetTypeRec() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual AliMultiplicity*AliTrackleter::GetMultiplicity() const
virtual const char*TObject::GetName() const
Int_tGetNClustersLayer1() const
Int_tGetNClustersLayer2() const
Short_tGetNFiredChips(Int_t layer) const
Int_tGetNSingleClusters() const
Int_tGetNTracklets() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
Float_t*GetTracklet(Int_t n)
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
voidLoadClusterFiredChips(TTree* tree)
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
voidProcessESDTracks()
virtual Int_tTObject::Read(const char* name)
virtual voidReconstruct(AliESDEvent* esd, TTree* treeRP)
voidReconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
voidSaveHists()
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCutChi2cGamma(Float_t v = 2.)
voidSetCutChi2cK0(Float_t v = 2.)
voidSetCutDCArz(Float_t v = 0.5)
voidSetCutGammaSFromDecay(Float_t v = -10.)
voidSetCutK0SFromDecay(Float_t v = -10.)
voidSetCutMassGamma(Float_t v = 0.03)
voidSetCutMassGammaNSigma(Float_t v = 5.)
voidSetCutMassK0(Float_t v = 0.03)
voidSetCutMassK0NSigma(Float_t v = 5.)
voidSetCutMaxDCA(Float_t v = 1.)
voidSetCutMaxDCADauther(Float_t v = 0.5)
voidSetCutMinElectronProbESD(Float_t v = 0.1)
voidSetCutMinElectronProbTPC(Float_t v = 0.5)
voidSetCutMinP(Float_t v = 0.05)
voidSetCutMinPointAngle(Float_t v = 0.98)
voidSetCutMinRGamma(Float_t v = 2.)
voidSetCutMinRK0(Float_t v = 1.)
voidSetCutPxDrSPDin(Float_t v = 0.1)
voidSetCutPxDrSPDout(Float_t v = 0.15)
voidSetCutPxDz(Float_t v = 0.2)
voidSetDetTypeRec(AliITSDetTypeRec* ptr)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetHistOn(Bool_t b = kFALSE)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPhiOverlapCut(Float_t w = 0.005)
voidSetPhiRotationAngle(Float_t w = 0.0)
voidSetPhiShift(Float_t w = 0.0045)
voidSetPhiWindow(Float_t w = 0.08)
voidSetRemoveClustersFromOverlaps(Bool_t b = kFALSE)
voidSetThetaWindow(Float_t w = 0.025)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetZetaOverlapCut(Float_t w = 0.05)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
AliTrackletAlg(const AliTrackletAlg& mr)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidLoadClusterArrays(TTree* tree)
voidTObject::MakeZombie()
AliTrackletAlg&operator=(const AliTrackletAlg& mr)

Data Members

public:
enum { kClTh
kClPh
kClZ
kClMC0
kClMC1
kClMC2
kClNPar
kTrTheta
kTrPhi
kTrDPhi
kTrDTheta
kTrLab1
kTrLab2
kClID1
kClID2
kTrNPar
kSCTh
kSCPh
kSCLab
kSCID
kSCNPar
kITSTPC
kITSSAP
kITSTPCBit
kITSSAPBit
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Float_t*fClustersLay1clusters in the 1st layer of ITS
Float_t*fClustersLay2clusters in the 2nd layer of ITS
Float_tfCutChi2cGammamax constrained chi2 cut for gammas
Float_tfCutChi2cK0max constrained chi2 cut for K0s
Float_tfCutDCArzmax DR or DZ for primares
Float_tfCutGammaSFromDecaymin path*P for gammas
Float_tfCutK0SFromDecaymin path*P for K0s
Float_tfCutMassGammamax gamma mass
Float_tfCutMassGammaNSigmamax standard deviations from 0 for gamma
Float_tfCutMassK0max K0 mass difference from PGD value
Float_tfCutMassK0NSigmamax standard deviations for K0 mass from PDG value
Float_tfCutMaxDCAmax DCA for V0 at ESD vertex
Float_tfCutMaxDCADauthermax DCA of daughters at V0
Float_tfCutMinElectronProbESDmin probability for e+/e- PID not involving TPC
Float_tfCutMinElectronProbTPCmin probability for e+/e- PID involving TPC
Float_tfCutMinPmin P of V0
Float_tfCutMinPointAnglemin pointing angle cosine
Float_tfCutMinRGammamin transv. distance from ESDVertex to V0 for gammas
Float_tfCutMinRK0min transv. distance from ESDVertex to V0 for K0s
Float_tfCutPxDrSPDinmax P*DR for primaries involving at least 1 SPD
Float_tfCutPxDrSPDoutmax P*DR for primaries not involving any SPD
Float_tfCutPxDzmax P*DZ for primaries
AliITSDetTypeRec*fDetTypeRec! pointer to DetTypeRec
Int_t*fDetectorIndexClustersLay1module index for clusters 1st ITS layer
Int_t*fDetectorIndexClustersLay2module index for clusters 2nd ITS layer
AliESDEvent*fESDEvent! pointer to ESD event
Bool_tfHistOnOption to define and fill the histograms
AliMultiplicity*AliTrackleter::fMultmultiplicity object
Int_tfNClustersLay1Number of clusters (Layer1)
Int_tfNClustersLay2Number of clusters (Layer2)
Short_tfNFiredChips[2]Number of fired chips in the two SPD layers
Int_tfNSingleClusterNumber of unassociated clusters
Int_tfNTrackletsNumber of tracklets
Bool_t*fOverlapFlagClustersLay1flag for clusters in the overlap regions 1st ITS layer
Bool_t*fOverlapFlagClustersLay2flag for clusters in the overlap regions 2nd ITS layer
Float_tfPhiOverlapCutFiducial window in phi for overlap cut
Float_tfPhiRotationAngleAngle to rotate the inner layer cluster for combinatorial reco only
Float_tfPhiShiftPhi shift reference value (at 0.5 T)
Float_tfPhiWindowSearch window in phi
Bool_tfRemoveClustersFromOverlapsOption to skip clusters in the overlaps
Float_t**fSClusterssingle clusters (unassociated)
Float_tfThetaWindowSearch window in theta
Float_t**fTrackletstracklets
TTree*fTreeRP! ITS recpoints
UInt_t*fUsedClusLay1RS: flag of clusters usage in ESD tracks: 0=unused, else ID+1 in word0=TPC/ITS+ITSSA, word1=ITSSA_Pure
UInt_t*fUsedClusLay2RS: flag of clusters usage in ESD tracks: 0=unused, else ID+1 word0=TPC/ITS+ITSSA, word1=ITSSA_Pure
Float_tfZetaOverlapCutFiducial window in eta for overlap cut
TH1F*fhClustersDPhiAccPhi2 - Phi1 for tracklets
TH1F*fhClustersDPhiAllPhi2 - Phi1 all the combinations
TH1F*fhClustersDThetaAccTheta2 - Theta1 for tracklets
TH1F*fhClustersDThetaAllTheta2 - Theta1 all the combinations
TH2F*fhDPhiVsDThetaAccsame plot for tracklets
TH2F*fhDPhiVsDThetaAll2D plot for all the combinations
TH1F*fhetaClustersLay1Pseudorapidity distr. for Clusters L. 1
TH1F*fhetaTrackletsPseudorapidity distr. for tracklets
TH1F*fhphiClustersLay1Azimuthal (Phi) distr. for Clusters L. 1
TH1F*fhphiTrackletsAzimuthal (Phi) distr. for tracklets

Class Charts

Inheritance Chart:
TObject
AliTrackleter
AliTrackletAlg

Function documentation

AliTrackletAlg()

AliTrackletAlg(const AliTrackletAlg& mr)

 Copy constructor :!!! RS ATTENTION: old c-tor reassigned the pointers instead of creating a new copy -> would crash on delete
AliTrackletAlg& operator=(const AliTrackletAlg& mr)
 Assignment operator
~AliTrackletAlg()
 Destructor
void Reconstruct(AliESDEvent* esd, TTree* treeRP)
void Reconstruct(TTree* tree, Float_t* vtx, Float_t* vtxRes)
 RS NOTE - this is old reconstructor invocation, to be used from VertexFinder
void FindTracklets(const Float_t* vtx)
 - calls LoadClusterArrays that finds the position of the clusters
   (in global coord)
void CreateMultiplicityObject()
 create AliMultiplicity object and store it in the ESD event

void LoadClusterArrays(TTree* tree)
 This method
 - gets the clusters from the cluster tree
 - convert them into global coordinates
 - store them in the internal arrays
 - count the number of cluster-fired chips

 RS: This method was strongly modified wrt original. In order to have the same numbering
 of clusters as in the ITS reco I had to introduce sorting in Z
 Also note that now the clusters data are stored not in float[6] attached to float**, but in 1-D array
LoadClusterFiredChips(TTree* tree)
 This method
 - gets the clusters from the cluster tree
 - counts the number of (cluster)fired chips
SaveHists()
 This method save the histograms on the output file
 (only if fHistOn is TRUE).
FlagClustersInOverlapRegions(Int_t ic1, Int_t ic2)
void ProcessESDTracks()
 Flag the clusters used by ESD tracks
 Flag primary tracks to be used for multiplicity counting

void FlagTrackClusters(Int_t id)
 RS: flag the SPD clusters of the track if it is useful for the multiplicity estimation

void FlagIfSecondary(AliESDtrack* track, const AliVertex* vtx)
 RS: check if the track is primary and set the flag
void FlagV0s(const AliESDVertex* vtx)
 flag tracks belonging to v0s

Bool_t CanBeElectron(const AliESDtrack* trc) const
 check if the track can be electron
void SetPhiWindow(Float_t w = 0.08)
void SetThetaWindow(Float_t w = 0.025)
void SetPhiShift(Float_t w = 0.0045)
void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE)
void SetPhiOverlapCut(Float_t w = 0.005)
void SetZetaOverlapCut(Float_t w = 0.05)
void SetPhiRotationAngle(Float_t w = 0.0)
Int_t GetNClustersLayer1() const
{return fNClustersLay1;}
Int_t GetNClustersLayer2() const
{return fNClustersLay2;}
Int_t GetNTracklets() const
{return fNTracklets;}
Int_t GetNSingleClusters() const
{return fNSingleCluster;}
Short_t GetNFiredChips(Int_t layer) const
{return fNFiredChips[layer];}
Float_t* GetClusterLayer1(Int_t n)
{return &fClustersLay1[n*kClNPar];}
Float_t* GetClusterLayer2(Int_t n)
{return &fClustersLay2[n*kClNPar];}
Float_t* GetTracklet(Int_t n)
{return fTracklets[n];}
Float_t* GetCluster(Int_t n)
{return fSClusters[n];}
void SetHistOn(Bool_t b = kFALSE)
{fHistOn=b;}
AliITSDetTypeRec * GetDetTypeRec() const
{return fDetTypeRec;}
void SetDetTypeRec(AliITSDetTypeRec* ptr)
{fDetTypeRec = ptr;}
void SetCutPxDrSPDin(Float_t v = 0.1)
void SetCutPxDrSPDout(Float_t v = 0.15)
void SetCutPxDz(Float_t v = 0.2)
{ fCutPxDz = v;}
void SetCutDCArz(Float_t v = 0.5)
{ fCutDCArz = v;}
void SetCutMinElectronProbTPC(Float_t v = 0.5)
void SetCutMinElectronProbESD(Float_t v = 0.1)
void SetCutMinP(Float_t v = 0.05)
{ fCutMinP = v;}
void SetCutMinRGamma(Float_t v = 2.)
void SetCutMinRK0(Float_t v = 1.)
{ fCutMinRK0 = v;}
void SetCutMinPointAngle(Float_t v = 0.98)
void SetCutMaxDCADauther(Float_t v = 0.5)
void SetCutMassGamma(Float_t v = 0.03)
void SetCutMassGammaNSigma(Float_t v = 5.)
void SetCutMassK0(Float_t v = 0.03)
{ fCutMassK0 = v;}
void SetCutMassK0NSigma(Float_t v = 5.)
void SetCutChi2cGamma(Float_t v = 2.)
void SetCutChi2cK0(Float_t v = 2.)
{ fCutChi2cK0 = v;}
void SetCutGammaSFromDecay(Float_t v = -10.)
void SetCutK0SFromDecay(Float_t v = -10.)
void SetCutMaxDCA(Float_t v = 1.)
{ fCutMaxDCA = v;}
Float_t GetCutPxDrSPDin() const
{return fCutPxDrSPDin;}
Float_t GetCutPxDrSPDout() const
{return fCutPxDrSPDout;}
Float_t GetCutPxDz() const
{return fCutPxDz;}
Float_t GetCutDCArz() const
{return fCutDCArz;}
Float_t GetCutMinElectronProbTPC() const
Float_t GetCutMinElectronProbESD() const
Float_t GetCutMinP() const
{return fCutMinP;}
Float_t GetCutMinRGamma() const
{return fCutMinRGamma;}
Float_t GetCutMinRK0() const
{return fCutMinRK0;}
Float_t GetCutMinPointAngle() const
Float_t GetCutMaxDCADauther() const
Float_t GetCutMassGamma() const
{return fCutMassGamma;}
Float_t GetCutMassGammaNSigma() const
Float_t GetCutMassK0() const
{return fCutMassK0;}
Float_t GetCutMassK0NSigma() const
Float_t GetCutChi2cGamma() const
{return fCutChi2cGamma;}
Float_t GetCutChi2cK0() const
{return fCutChi2cK0;}
Float_t GetCutGammaSFromDecay() const
Float_t GetCutK0SFromDecay() const
Float_t GetCutMaxDCA() const
{return fCutMaxDCA;}