Implementation version v1 of the PHOS particle identifier Particle identification based on the - RCPV: distance from CPV recpoint to EMCA recpoint. - TOF - PCA: Principal Components Analysis.. The identified particle has an identification number corresponding to a 9 bits number: -Bit 0 to 2: bit set if RCPV > CpvEmcDistance (each bit corresponds to a different efficiency-purity point of the photon identification) -Bit 3 to 5: bit set if TOF < TimeGate (each bit corresponds to a different efficiency-purity point of the photon identification) -Bit 6 to 9: bit set if Principal Components are inside an ellipse defined by the parameters a, b, c, x0 and y0. (each bit corresponds to a different efficiency-purity point of the photon identification) The PCA (Principal components analysis) needs a file that contains a previous analysis of the correlations between the particles. This file is $ALICE_ROOT/PHOS/PCA8pa15_0.5-100.root. Analysis done for energies between 0.5 and 100 GeV. A calibrated energy is calculated. The energy of the reconstructed cluster is corrected with the formula A + B * E + C * E^2, whose parameters where obtained through the study of the reconstructed energy distribution of monoenergetic photons. All the parameters (RCPV(2 rows-3 columns),TOF(1r-3c),PCA(5r-4c) and calibration(1r-3c))are stored in a file called $ALICE_ROOT/PHOS/Parameters.dat. Each time that AliPHOSPIDv1 is initialized, this parameters are copied to a Matrix (9,4), a TMatrixD object. use case: root [0] AliPHOSPIDv1 * p = new AliPHOSPIDv1("galice1.root") Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated // reading headers from file galice1.root and create RecParticles TrackSegments and RecPoints are used // set file name for the branch RecParticles root [1] p->ExecuteTask("deb all time") // available options // "deb" - prints # of reconstructed particles // "deb all" - prints # and list of RecParticles // "time" - prints benchmarking results root [2] AliPHOSPIDv1 * p2 = new AliPHOSPIDv1("galice1.root","v1",kTRUE) Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated //Split mode. root [3] p2->ExecuteTask()
AliPHOSPIDv1() | |
AliPHOSPIDv1(AliPHOSGeometry* geom) | |
AliPHOSPIDv1(const AliPHOSPIDv1& pid) | |
virtual | ~AliPHOSPIDv1() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
virtual void | TObject::Browse(TBrowser* b) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TObject::Clear(Option_t* = "") |
virtual TObject* | TObject::Clone(const char* newname = "") const |
virtual Int_t | TObject::Compare(const TObject* obj) const |
virtual void | TObject::Copy(TObject& object) const |
virtual void | TObject::Delete(Option_t* option = "")MENU |
virtual Int_t | TObject::DistancetoPrimitive(Int_t px, Int_t py) |
virtual void | TObject::Draw(Option_t* option = "") |
virtual void | TObject::DrawClass() constMENU |
virtual TObject* | TObject::DrawClone(Option_t* option = "") constMENU |
virtual void | TObject::Dump() constMENU |
virtual void | TObject::Error(const char* method, const char* msgfmt) const |
virtual void | TObject::Execute(const char* method, const char* params, Int_t* error = 0) |
virtual void | TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) |
virtual void | TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) |
virtual void | TObject::Fatal(const char* method, const char* msgfmt) const |
virtual TObject* | TObject::FindObject(const char* name) const |
virtual TObject* | TObject::FindObject(const TObject* obj) const |
Float_t | GetCpv2EmcDistanceCut(TString axis, Float_t e) const |
Float_t | GetDispersionEnergyThreshold() const |
Int_t | GetDispersionMultiplicityThreshold() const |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
Float_t | GetEllipseParameter(TString particle, TString param, Float_t e) const |
const TString | GetFileNameParameters() const |
const TString | GetFileNamePrincipal(TString particle) 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_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
Float_t | GetParameterCalibration(Int_t i) const |
Float_t | GetParameterCpv2Emc(Int_t i, TString axis) const |
Float_t | GetParameterPhotonBoundary(Int_t i) const |
Float_t | GetParameterPi0Boundary(Int_t i) const |
Float_t | GetParameterTimeGate(Int_t i) const |
Float_t | GetParameterToCalculateEllipse(TString particle, TString param, Int_t i) const |
TClonesArray* | AliPHOSPID::GetRecParticles() const |
Double_t | GetThresholdChargedNeutral() const |
virtual const char* | TObject::GetTitle() const |
Float_t | GetTOFEnergyThreshold() const |
virtual UInt_t | TObject::GetUniqueID() const |
void | GetVertex() |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TObject::Hash() const |
virtual void | TObject::Info(const char* method, const char* msgfmt) const |
virtual Bool_t | TObject::InheritsFrom(const char* classname) const |
virtual Bool_t | TObject::InheritsFrom(const TClass* cl) const |
virtual void | TObject::Inspect() constMENU |
void | TObject::InvertBit(UInt_t f) |
virtual TClass* | IsA() const |
virtual Bool_t | TObject::IsEqual(const TObject* obj) const |
virtual Bool_t | TObject::IsFolder() const |
Bool_t | TObject::IsOnHeap() const |
virtual Bool_t | TObject::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TObject::ls(Option_t* option = "") const |
void | TObject::MayNotUse(const char* method) const |
virtual Bool_t | TObject::Notify() |
void | TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const |
static void | TObject::operator delete(void* ptr) |
static void | TObject::operator delete(void* ptr, void* vp) |
static void | TObject::operator delete[](void* ptr) |
static void | TObject::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) |
AliPHOSPIDv1& | operator=(const AliPHOSPIDv1&) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | Print(Option_t* = "") const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
void | TObject::ResetBit(UInt_t f) |
virtual void | TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU |
virtual void | TObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "") |
void | SetBayesianPID(Bool_t set) |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
void | SetDispersionEnergyThreshold(Float_t th) |
void | SetDispersionMultiplicityThreshold(Int_t th) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
void | AliPHOSPID::SetESD(AliESDEvent* esd) |
void | AliPHOSPID::SetInput(TTree* clustersTree, TClonesArray* trackSegments) |
static void | TObject::SetObjectStat(Bool_t stat) |
void | SetParameterCalibration(Int_t i, Float_t param) |
void | SetParameterCpv2Emc(Int_t i, TString axis, Float_t cut) |
void | SetParameterPhotonBoundary(Int_t i, Float_t param) |
void | SetParameterPi0Boundary(Int_t i, Float_t param) |
void | SetParameterTimeGate(Int_t i, Float_t gate) |
void | SetParameterToCalculateEllipse(TString particle, TString param, Int_t i, Float_t value) |
void | SetThresholdChargedNeutral(Double_t th) |
void | SetTOFEnergyThreshold(Float_t th) |
virtual void | TObject::SetUniqueID(UInt_t uid) |
void | SetWriting(Bool_t toWrite = kFALSE) |
virtual void | ShowMembers(TMemberInspector&) |
virtual void | Streamer(TBuffer&) |
void | StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) |
virtual void | TObject::SysError(const char* method, const char* msgfmt) const |
Bool_t | TObject::TestBit(UInt_t f) const |
Int_t | TObject::TestBits(UInt_t f) const |
virtual void | TrackSegments2RecParticles(Option_t* option) |
virtual void | TObject::UseCurrentStyle() |
virtual const char* | Version() const |
virtual void | TObject::Warning(const char* method, const char* msgfmt) const |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) |
virtual Int_t | TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const |
virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
void | TObject::MakeZombie() |
Double_t | GausF(Double_t x, Double_t y, Double_t* par) |
Double_t | GausPol2(Double_t x, Double_t y, Double_t* par) |
Int_t | GetCPVBit(AliPHOSTrackSegment* ts, Int_t EffPur, Float_t e) const |
Int_t | GetHardPhotonBit(AliPHOSEmcRecPoint* emc) const |
Int_t | GetHardPi0Bit(AliPHOSEmcRecPoint* emc) const |
void | GetInitPID(Double_t* pid) const |
TVector3 | GetMomentumDirection(AliPHOSEmcRecPoint* emc, AliPHOSCpvRecPoint* cpv) const |
Int_t | GetPrincipalBit(TString particle, const Double_t* P, Int_t EffPur, Float_t e) const |
virtual void | InitParameters() |
Double_t | LandauF(Double_t x, Double_t y, Double_t* par) |
Double_t | LandauPol2(Double_t x, Double_t y, Double_t* par) |
void | MakePID() |
void | MakeRecParticles() |
void | PrintRecParticles(Option_t* option) |
void | SetInitPID(const Double_t* pid) |
void | SetParameters() |
enum TObject::EStatusBits { | kCanDelete | |
kMustCleanup | ||
kObjInCanvas | ||
kIsReferenced | ||
kHasUUID | ||
kCannotPick | ||
kNoContextMenu | ||
kInvalidObject | ||
}; | ||
enum TObject::[unnamed] { | kIsOnHeap | |
kNotDeleted | ||
kZombie | ||
kBitMask | ||
kSingleKey | ||
kOverwrite | ||
kWriteDelete | ||
}; |
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 |
Bool_t | fBayesian | Do PID bayesian |
Double_t | fChargedNeutralThreshold | Threshold to differentiate between charged and neutral |
TFormula* | fDFmuon | the formula |
Bool_t | fDefaultInit | ! kTRUE if the task was created by defaut ctor (only parameters are initialized) |
Double_t | fDhadron[10] | gaussian ss response for hadrons |
Float_t | fDispEnThreshold | Minimum energy to use shower shape |
Int_t | fDispMultThreshold | Minimum multiplicity to use shower shape |
Double_t | fDmuon[3] | gaussian ss response for muon |
Double_t | fDphoton[10] | gaussian ss response for EM |
Double_t | fDpi0[10] | gaussian ss response for pi0 |
TFormula* | fERecWeight | the formula |
Double_t | fERecWeightPar[4] | gaussian tof response for photon |
TString | fFileNameParameters | File name with PID parameters |
TString | fFileNamePrincipalPhoton | File name of the photon principals |
TString | fFileNamePrincipalPi0 | File name of the pi0 principals |
Double_t | fInitPID[14] | Initial population to do bayesian PID |
Double_t* | fPPhoton | ! Principal photon eigenvalues |
Double_t* | fPPi0 | ! Principal pi0 eigenvalues |
TMatrixF* | fParameters | ! Matrix of identification Parameters |
TPrincipal* | fPrincipalPhoton | ! TPrincipal from photon pca file |
TPrincipal* | fPrincipalPi0 | ! TPrincipal from pi0 pca file |
TFormula* | fTFhhadrong | the formula |
TFormula* | fTFhhadronl | the formula |
TFormula* | fTFkaong | the formula |
TFormula* | fTFkaonl | the formula |
TFormula* | fTFphoton | the formula |
TFormula* | fTFpiong | the formula |
Float_t | fTOFEnThreshold | Maximum energy to use TOF |
Double_t | fThhadrong[3] | gaus tof response for heavy hadrons |
Double_t | fThhadronl[3] | landau tof response for heavy hadrons |
Double_t | fTkaong[3] | landau tof response for kaons |
Double_t | fTkaonl[3] | landau tof response for kaons |
Double_t | fTphoton[3] | gaussian tof response for photon |
Double_t | fTpiong[3] | gaussian tof response for pions |
TVector3 | fVtx | ! Vertex position in current event |
Bool_t | fWrite | ! To write result to file |
Double_t* | fX | ! Shower shape for the principal data |
Double_t | fXcharged[10] | landau emc-cpv distance response for charged part (no elect) */ |
Double_t | fXelectron[10] | gaussian emc-cpv distance response for electron |
Double_t | fZcharged[10] | landau emc-cpv distance response for charged part (no elect) */ |
Double_t | fZelectron[10] | gaussian emc-cpv distance response for electron |
Inheritance Chart: | ||||||||||||
|
ctor with the indication on where to look for the track segments
Steering method to perform particle reconstruction and identification for the event range from fFirstEvent to fLastEvent.
Given the energy x and the parameter y (tof, shower dispersion or cpv-emc distance), this method returns a density probability of this parameter, given by a gaussian function whose parameters depend with the energy with a function: a/(x*x)+b/x+b Float_t xorg = x;
Given the energy x and the parameter y (tof, shower dispersion or cpv-emc distance), this method returns a density probability of this parameter, given by a gaussian function whose parameters depend with the energy like second order polinomial
Get file name that contains the PCA for a particle ("photon or pi0")
Get the i-th parameter "CPV-EMC distance" for the specified axis
Get CpvtoEmcDistance Cut depending on the cluster energy, axis and Purity-Efficiency point
Calculates the parameter param of the ellipse
Get the parameter "i" to calculate the boundary on the moment M2x
for photons at high p_T
Get the parameter "i" to calculate the boundary on the moment M2x
for pi0 at high p_T
Get TimeGate parameter depending on Purity-Efficiency i: i=0 - Low purity, i=1 - Medium purity, i=2 - High purity
Get the parameter "i" that is needed to calculate the ellipse parameter "param" for the particle "particle" ("photon" or "pi0")
Calculates the pid bit for the CPV selection per each purity.
Is the particle inside de PCA ellipse?
Set bit for identified hard photons (E > 30 GeV) if the second moment M2x is below the boundary
Set bit for identified hard pi0 (E > 30 GeV) if the second moment M2x is above the boundary
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.
Given the energy x and the parameter y (tof, shower dispersion or cpv-emc distance), this method returns a density probability of this parameter, given by a landau function whose parameters depend with the energy with a function: a/(x*x)+b/x+b
PCA : To do the Principal Components Analysis it is necessary the Principal file, which is opened here
Set the parameters to calculate Cpv-to-Emc Distance Cut depending on Purity-Efficiency point i
Set parameter "Hard photon boundary" i to a value param
Set parameter "Hard pi0 boundary" i to a value param
Set the parameter TimeGate depending on Purity-Efficiency point i
Set the parameter "i" that is needed to calculate the ellipse parameter "param" for a particle "particle"
Get file name that contain PID parameters
{return fFileNameParameters ;}
Switch to "on flyght" mode, without writing to TreeR and file
{fWrite = toWrite;}