ROOT logo
AliRoot » PHOS » AliPHOSTrackSegmentMakerv1

class AliPHOSTrackSegmentMakerv1: public AliPHOSTrackSegmentMaker

 Implementation version 1 of algorithm class to construct PHOS track segments
 Track segment for PHOS is list of
        EMC RecPoint + (possibly) CPV RecPoint
 To find TrackSegments we do the following:
  for each EMC RecPoints we look at
   CPV RecPoints in the radious fRcpv.
  If there is such a CPV RecPoint,
   we make "Link" it is just indexes of EMC and CPV RecPoint and distance
   between them in the PHOS plane.
  Then we sort "Links" and starting from the
   least "Link" pointing to the unassined EMC and CPV RecPoints assing them to
   new TrackSegment.
 If there is no CPV RecPoint we make TrackSegment
 consisting from EMC alone. There is no TrackSegments without EMC RecPoint.
 In principle this class should be called from AliPHOSReconstructor, but
 one can use it as well in standalone mode.
 Use  case:
  root [0] AliPHOSTrackSegmentMakerv1 * t = new AliPHOSTrackSegmentMaker("galice.root", "tracksegmentsname", "recpointsname")
  Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated
               // reads gAlice from header file "galice.root", uses recpoints stored in the branch names "recpointsname" (default = "Default")
               // and saves recpoints in branch named "tracksegmentsname" (default = "recpointsname")
  root [1] t->ExecuteTask()
  root [3] t->SetTrackSegmentsBranch("max distance 5 cm")
  root [4] t->ExecuteTask("deb all time")

*-- Author: Dmitri Peressounko (RRC Ki & SUBATECH) & Yves Schutz (SUBATECH)

Function Members (Methods)

public:
AliPHOSTrackSegmentMakerv1()
AliPHOSTrackSegmentMakerv1(AliPHOSGeometry* geom)
AliPHOSTrackSegmentMakerv1(const AliPHOSTrackSegmentMakerv1& tsm)
virtual~AliPHOSTrackSegmentMakerv1()
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 voidClusters2TrackSegments(Option_t* option)
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
voidFillOneModule()
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()
AliESDEvent*AliPHOSTrackSegmentMaker::GetESD() const
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
virtual const char*TObject::GetTitle() const
virtual TClonesArray*GetTrackSegments() 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
voidMakeLinks() const
voidMakePairs()
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)
AliPHOSTrackSegmentMakerv1&operator=(const AliPHOSTrackSegmentMakerv1&)
virtual voidTObject::Paint(Option_t* option = "")
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 voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliPHOSTrackSegmentMaker::SetESD(AliESDEvent* esd)
voidAliPHOSTrackSegmentMaker::SetInput(TTree* clustersTree)
virtual voidSetMaxCPVTPCDistance(Float_t r)
virtual voidSetMaxEmcCPVDistance(Float_t r)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetWriting(Bool_t toWrite = kFALSE)
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 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()
private:
voidGetDistanceInPHOSPlane(AliPHOSEmcRecPoint* EmcClu, AliPHOSCpvRecPoint* Cpv, Int_t& track, Float_t& dx, Float_t& dz) const
voidInit()
voidInitParameters()
voidPrintTrackSegments(Option_t* option)

Data Members

protected:
TObjArray*AliPHOSTrackSegmentMaker::fCPVRecPointsArray with the CPV clusters
TObjArray*AliPHOSTrackSegmentMaker::fEMCRecPointsArray with the EMC clusters
AliESDEvent*AliPHOSTrackSegmentMaker::fESD! ESD object
AliPHOSGeometry*AliPHOSTrackSegmentMaker::fGeom! Pointer to the PHOS geometry
private:
Int_tfCpvFirst! Cpv upper layer
Int_tfCpvLast!
Bool_tfDefaultInit! Says if the task was created by defaut ctor (only parameters are initialized)
Int_tfEmcFirst! Index of first EMC RecPoint belonging to currect PHOS module
Int_tfEmcLast!
TClonesArray*fLinkUpArray!
Int_tfModule! number of module being processed
Int_tfNTrackSegmentsnumber of track segments found
Float_tfRcpvMaximum distance between a EMC RecPoint and a CPV RecPoint
Float_tfRtpcMaximum distance between a EMC RecPoint and extrapolation of a TPC track
TClonesArray*fTrackSegmentsArray with found track-segments
TVector3fVtx! Vertex in current position
Bool_tfWriteWrite Tracks to TreeT

Class Charts

Inheritance Chart:
TObject
AliPHOSTrackSegmentMaker
AliPHOSTrackSegmentMakerv1

Function documentation

AliPHOSTrackSegmentMakerv1()
 default ctor (to be used mainly by Streamer)
AliPHOSTrackSegmentMakerv1(AliPHOSGeometry* geom)
 ctor
AliPHOSTrackSegmentMakerv1(const AliPHOSTrackSegmentMakerv1& tsm)
 cpy ctor: no implementation yet
 requested by the Coding Convention
~AliPHOSTrackSegmentMakerv1()
 dtor
 fDefaultInit = kTRUE if TrackSegmentMaker created by default ctor (to get just the parameters)
void FillOneModule()
 Finds first and last indexes between which
 clusters from one PHOS module are
void GetDistanceInPHOSPlane(AliPHOSEmcRecPoint* EmcClu, AliPHOSCpvRecPoint* Cpv, Int_t& track, Float_t& dx, Float_t& dz) const
 Calculates the distance between the EMC RecPoint and the CPV RecPoint
 If no CPV, calculates the distance between the EMC RecPoint and the track
 prolongation to the PHOS module plane.
 Clusters are sorted in "rows" and "columns" of width 1 cm
void Init()
 Make all memory allocations that are not possible in default constructor
void InitParameters()
Initializes parameters
void MakeLinks() const
 Finds distances (links) between all EMC and CPV clusters,
 which are not further apart from each other than fRcpv
 and sort them in accordance with this distance
void MakePairs()
 Using the previously made list of "links", we found the smallest link - i.e.
 link with the least distance between EMC and CPV and pointing to still
 unassigned RecParticles. We assign these RecPoints to TrackSegment and
 remove them from the list of "unassigned".
void Clusters2TrackSegments(Option_t* option)
 Steering method to perform track segment construction for the current event
 Returns an array with the found track-segments.
void Print(Option_t* = "") const
  Print TrackSegmentMaker parameters
void PrintTrackSegments(Option_t* option)
 option deb - prints # of found TrackSegments
 option deb all - prints as well indexed of found RecParticles assigned to the TS
void SetWriting(Bool_t toWrite = kFALSE)
Switch to "on flyght" mode, without writing to TreeR and file
{fWrite = toWrite;}
void SetMaxEmcCPVDistance(Float_t r)
between EMCrp and CPVrp
{ fRcpv = r ;}
void SetMaxCPVTPCDistance(Float_t r)
between EMCrp and extrapolation of TPC track
{ fRtpc = r ;}
const char * Version() const
{ return "tsm-v1" ; }
TClonesArray * GetTrackSegments() const
{ return fTrackSegments; }