ROOT logo
AliRoot » PHOS » AliPHOSPIDv0

class AliPHOSPIDv0: public AliPHOSPID

 Implementation version v0 of the PHOS particle identifier
 Particle identification based on the
     - CPV information,
     - Preshower information (in MIXT or GPS2 geometries)
     - shower width.

 CPV or Preshower clusters should be closer in PHOS plane than fCpvEmcDistance (in cm).
 This parameter can be set by method SetCpvtoEmcDistanceCut(Float_t cut)

 One can set desirable ID method by the function SetIdentificationMethod(option).
 Presently the following options can be used together or separately :
     - "disp": use dispersion cut on shower width
               (width can be set by method SetDispersionCut(Float_t cut)
     - "ell" : use cut on the axis of the ellipse, drawn around shower
       (this cut can be changed by SetShowerProfileCut(char* formula),
        where formula - any function of two variables f(lambda[0],lambda[1]).
        Shower is considered as EM if f() > 0 )
 One can visualize current cuts calling method PlotDispersionCuts().

 use case:
  root [0] AliPHOSPIDv0 * p1 = new AliPHOSPIDv0("galice.root")
  Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
  root [1] p1->SetIdentificationMethod("disp ellipse")
  root [2] p1->ExecuteTask()
  root [3] AliPHOSPIDv0 * p2 = new AliPHOSPIDv0("galice1.root","ts1")
  Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
                // reading headers from file galice1.root and TrackSegments
                // with title "ts1"
  root [4] p2->SetRecParticlesBranch("rp1")
                // set file name for the branch RecParticles
  root [5] p2->ExecuteTask("deb all time")
                // available options
                // "deb" - prints # of reconstructed particles
                // "deb all" -  prints # and list of RecParticles
                // "time" - prints benchmarking results

*-- Author: Yves Schutz (SUBATECH)  & Gines Martinez (SUBATECH) &
            Dmitri Peressounko (SUBATECH & Kurchatov Institute)
            Completely redesined by Dmitri Peressounko, March 2001

Function Members (Methods)

public:
AliPHOSPIDv0()
AliPHOSPIDv0(AliPHOSGeometry* geom)
AliPHOSPIDv0(const AliPHOSPIDv0& rhs)
virtual~AliPHOSPIDv0()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
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
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
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
TClonesArray*AliPHOSPID::GetRecParticles() const
virtual const char*TObject::GetTitle() const
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
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)
AliPHOSPIDv0&operator=(const AliPHOSPIDv0& rhs)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidPlotDispersionCuts() const
virtual voidTObject::Pop()
virtual voidPrint(Option_t* = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
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)
virtual voidSetCpvtoEmcDistanceCut(Float_t cut)
virtual voidSetDispersionCut(Float_t cut)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliPHOSPID::SetESD(AliESDEvent* esd)
virtual voidSetIdentificationMethod(const char* option = "CPV DISP")
voidAliPHOSPID::SetInput(TTree* clustersTree, TClonesArray* trackSegments)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidSetShowerProfileCut(const char* formula = "0.35*0.35 - (x-1.386)*(x-1.386) - 1.707*1.707*(y-1.008)*(y-1.008)")
virtual voidSetTimeGate(Float_t gate)
virtual voidTObject::SetUniqueID(UInt_t uid)
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 voidTrackSegments2RecParticles(Option_t* option)
virtual voidTObject::UseCurrentStyle()
virtual const char*Version() const
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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

protected:
TObjArray*AliPHOSPID::fCPVRecPoints!Array with CPV clusters
TObjArray*AliPHOSPID::fEMCRecPoints!Array with EMC clusters
AliESDEvent*AliPHOSPID::fESD! ESD object
AliPHOSGeometry*AliPHOSPID::fGeom! Pointer to PHOS Geometry
TClonesArray*AliPHOSPID::fRecParticles!Array with reconstructed particles (PID)
TClonesArray*AliPHOSPID::fTrackSegments!Array with found track segments
private:
AliPHOSClusterizer*fClusterizer!
Float_tfCpvEmcDistanceMax EMC-CPV distance
Float_tfDispersiondispersion cut
TFormula*fFormulaformula to define cut on the shower elips axis
TStringfIDOptionsPID option
AliPHOSTrackSegmentMaker*fTSMaker!
Float_tfTimeGateTime of the latest EmcRecPoint accepted as EM

Class Charts

Inheritance Chart:
TObject
AliPHOSPID
AliPHOSPIDv0

Function documentation

AliPHOSPIDv0()
 default ctor
AliPHOSPIDv0(AliPHOSGeometry* geom)
ctor
AliPHOSPIDv0(const AliPHOSPIDv0& rhs)
Copy ctor, the same as compiler-generated, possibly wrong if
someone implements dtor correctly.
~AliPHOSPIDv0()
Empty dtor, fFormula leaks
void TrackSegments2RecParticles(Option_t* option)
Steering method
void MakeRecParticles()
 Reconstructs the particles from the tracksegments
void SetShowerProfileCut(const char* formula = "0.35*0.35 - (x-1.386)*(x-1.386) - 1.707*1.707*(y-1.008)*(y-1.008)")
set shape of the cut on the axis of ellipce, drown around shouer
shower considered "narrow" if Formula(lambda[0],lambda[1]) > 0.
void PlotDispersionCuts() const
 produces a plot of the dispersion cut
TVector3 GetMomentumDirection(AliPHOSEmcRecPoint* emc, AliPHOSRecPoint* cpv) const
 Calculates the momentum direction:
   1. if only a EMC RecPoint, direction is given by IP and this RecPoint
   2. if a EMC RecPoint and CPV RecPoint, direction is given by the line through the 2 recpoints
  However because of the poor position resolution of PPSD the direction is always taken as if we were
  in case 1.
void PrintRecParticles(Option_t* option)
 Print table of reconstructed particles
void Print(Option_t* = "") const
void SetIdentificationMethod(const char* option = "CPV DISP")
{fIDOptions = option ;}
void SetDispersionCut(Float_t cut)
{fDispersion = cut ; }
void SetCpvtoEmcDistanceCut(Float_t cut)
{fCpvEmcDistance = cut ;}
void SetTimeGate(Float_t gate)
{fTimeGate = gate ;}
const char * Version() const
{ return "pid-v0" ; }