ROOT logo
AliRoot » STEER » STEERBASE » AliTPCPIDResponse

class AliTPCPIDResponse: public TNamed

           Implementation of the TPC PID class
 Very naive one... Should be made better by the detector experts...
      Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
 With many additions and modifications suggested by
      Alexander Kalweit, GSI, alexander.philipp.kalweit@cern.ch
      Dariusz Miskowiec, GSI, D.Miskowiec@gsi.de
 ...and some modifications by
      Mikolaj Krzewicki, GSI, mikolaj.krzewicki@cern.ch
 ...and some modifications plus eta correction functions by
      Benjamin Hess, University of Tuebingen, bhess@cern.ch

Function Members (Methods)

public:
AliTPCPIDResponse()
AliTPCPIDResponse(const AliTPCPIDResponse&)
virtual~AliTPCPIDResponse()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
Double_tBethe(Double_t bg) const
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) 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
Double_tEvaldEdxSpline(Double_t bg, Int_t entry)
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 voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
static const char*GainScenarioName(Int_t n)
Int_tGetCurrentEventMultiplicity() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Double_tGetEtaAndMultiplicityCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetEtaCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetEtaCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetEtaCorrectionFast(const AliVTrack* track, Double_t dEdxSplines) const
const TH2D*GetEtaCorrMap() const
Double_tGetExpectedSigma(Float_t mom, Int_t nPoints, AliPID::EParticleType n = AliPID::kKaon) const
Double_tGetExpectedSigma(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const
Double_tGetExpectedSignal(Float_t mom, AliPID::EParticleType n = AliPID::kKaon) const
Double_tGetExpectedSignal(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const
virtual const char*TObject::GetIconName() const
Double_tGetMIP() const
Double_tGetMultiplicityCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetMultiplicityCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetMultiplicityCorrectionFast(const AliVTrack* track, Double_t dEdxExpected, Int_t multiplicity) const
const TF1*GetMultiplicityCorrectionFunction() const
const TF1*GetMultiplicityCorrectionFunctionTanTheta() const
Double_tGetMultiplicitySigmaCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetMultiplicitySigmaCorrectionFast(Double_t dEdxExpected, Int_t multiplicity) const
const TF1*GetMultiplicitySigmaCorrectionFunction() const
virtual const char*TNamed::GetName() const
Float_tGetNumberOfSigmas(Float_t mom, Float_t dEdx, Int_t nPoints, AliPID::EParticleType n = AliPID::kKaon) const
Float_tGetNumberOfSigmas(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Float_tGetRes0() const
Float_tGetRes0(AliTPCPIDResponse::ETPCgainScenario s) const
Float_tGetResN2() const
Float_tGetResN2(AliTPCPIDResponse::ETPCgainScenario s) const
const TObject*GetResponseFunction(AliPID::EParticleType type)
TSpline3*GetResponseFunction(AliPID::EParticleType species, AliTPCPIDResponse::ETPCgainScenario gainScenario) const
TSpline3*GetResponseFunction(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetSigmaPar0() const
Double_tGetSigmaPar1(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
Double_tGetSigmaPar1Fast(const AliVTrack* track, AliPID::EParticleType species, Double_t dEdx, const TSpline3* responseFunction) const
const TH2D*GetSigmaPar1Map() const
Float_tGetSignalDelta(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE, Bool_t ratio = kFALSE) const
virtual const char*TNamed::GetTitle() const
Double_tGetTrackTanTheta(const AliVTrack* track) const
virtual UInt_tTObject::GetUniqueID() const
Bool_tGetUseDatabase() const
Float_tGetVoltage(Int_t n) const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::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_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
Float_tMaxClusterRadius(const AliVTrack* track) 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)
AliTPCPIDResponse&operator=(const AliTPCPIDResponse&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
Bool_tRegisterSpline(const char* name, Int_t index)
voidTObject::ResetBit(UInt_t f)
voidResetMultiplicityCorrectionFunctions()
voidResetSplines()
Bool_tResponseFunctiondEdxN(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource, Double_t& dEdx, Int_t& nPoints, AliTPCPIDResponse::ETPCgainScenario& gainScenario, TSpline3** responseFunction) const
Int_tResponseFunctionIndex(AliPID::EParticleType species, AliTPCPIDResponse::ETPCgainScenario gainScenario) const
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
Bool_tsectorNumbersInOut(Double_t* trackPositionInner, Double_t* trackPositionOuter, Float_t& phiIn, Float_t& phiOut, Int_t& in, Int_t& out) const
voidSetBadIROCthreshold(Float_t v)
voidSetBadOROCthreshold(Float_t v)
voidSetBetheBlochParameters(Double_t kp1, Double_t kp2, Double_t kp3, Double_t kp4, Double_t kp5)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCurrentEventMultiplicity(Int_t value)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
Bool_tSetEtaCorrMap(TH2D* hMap)
voidSetLowGainIROCthreshold(Float_t v)
voidSetLowGainOROCthreshold(Float_t v)
voidSetMagField(Double_t mf)
voidSetMaxBadLengthFraction(Float_t f)
voidSetMip(Float_t mip)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetParameterMultiplicityCorrection(Int_t parIndex, Double_t parValue)
voidSetParameterMultiplicityCorrectionTanTheta(Int_t parIndex, Double_t parValue)
voidSetParameterMultiplicitySigmaCorrection(Int_t parIndex, Double_t parValue)
voidSetResponseFunction(AliPID::EParticleType type, TObject *const o)
voidSetResponseFunction(TObject* o, AliPID::EParticleType type, AliTPCPIDResponse::ETPCgainScenario gainScenario)
voidSetSigma(Float_t res0, Float_t resN2)
voidSetSigma(Float_t res0, Float_t resN2, AliTPCPIDResponse::ETPCgainScenario gainScenario)
Bool_tSetSigmaParams(TH2D* hSigmaPar1Map, Double_t sigmaPar0)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetUseDatabase(Bool_t useDatabase)
voidSetVoltage(Int_t n, Float_t v)
voidSetVoltageMap(const TVectorF& a)
static Double_tSEvaldEdx(Double_t bg, Int_t entry)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
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
Bool_tTrackApex(const AliVTrack* track, Float_t magField, Double_t* position) const
AliTPCPIDResponse::EChamberStatusTrackStatus(const AliVTrack* track, Int_t layer) 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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Double_tGetExpectedSigma(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCgainScenario gainScenario, Double_t dEdx, Int_t nPoints, const TSpline3* responseFunction, Bool_t correctEta, Bool_t correctMultiplicity) const
Double_tGetExpectedSignal(const AliVTrack* track, AliPID::EParticleType species, Double_t dEdx, const TSpline3* responseFunction, Bool_t correctEta, Bool_t correctMultiplicity) const
voidTObject::MakeZombie()
private:
Int_tsectorNumber(Double_t phi) const

Data Members

public:
enum EChamberStatus { kChamberOff
kChamberHighGain
kChamberLowGain
kChamberInvalid
};
enum ETPCgainScenario { kDefault
kALLhigh
kOROChigh
kGainScenarioInvalid
};
enum ETPCdEdxSource { kdEdxDefault
kdEdxOROC
kdEdxHybrid
kdEdxInvalid
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
public:
static const Int_tfgkNumberOfGainScenarios
static const Int_tfgkNumberOfParticleSpecies
static const Int_tfgkNumberOfdEdxSourceScenarios
protected:
TStringTNamed::fNameobject identifier
TStringTNamed::fTitleobject title
private:
Float_tfBadIROCthreshholdvoltage threshold for bad IROCS
Float_tfBadOROCthreshholdvoltage threshold for bad OROCS
TF1*fCorrFuncMultiplicity! Function to correct for the multiplicity dependence of the TPC dEdx
TF1*fCorrFuncMultiplicityTanTheta! Function to correct the additional tanTheta dependence of the multiplicity dependence of the TPC dEdx
TF1*fCorrFuncSigmaMultiplicity! Function to correct for the multiplicity dependence of the TPC dEdx resolution
Int_tfCurrentEventMultiplicityMultiplicity of the current event
Double_tfKp1Parameters
Double_tfKp2of
Double_tfKp3the ALEPH
Double_tfKp4Bethe-Bloch
Double_tfKp5formula
Float_tfLowGainIROCthresholdvoltage threshold below which the IROC is considered low gain
Float_tfLowGainOROCthresholdvoltage threshold below which the OROC is considered low gain
Float_tfMIPdEdx for MIP
Double_tfMagField! Magnetic field
Float_tfMaxBadLengthFractionthe maximum allowed fraction of track length in a bad sector.
Float_tfRes0[3]relative dEdx resolution rel sigma = fRes0*sqrt(1+fResN2/npoint)
Float_tfResN2[3]relative Npoint dependence rel sigma = fRes0*sqrt(1+fResN2/npoint)
TObjArrayfResponseFunctions! ObjArray of response functions individually for each particle
Double_tfSigmaPar0Parameter 0 of the dEdx sigma parametrisation
TObjArrayfSplineArrayarray of registered splines
Bool_tfUseDatabaseflag if fine-tuned database-response or simple ALEPH BB should be used
TVectorFfVoltageMap!stores a map of voltages wrt nominal for all chambers
static AliTPCPIDResponse*fgInstance! Instance of this class (singleton implementation)
static const char*fgkGainScenarioName[4]
TH2D*fhEtaCorr! Map for TPC eta correction
TH2D*fhEtaSigmaPar1! Map for parameter 1 of the dEdx sigma parametrisation

Class Charts

Inheritance Chart:
TNamed
AliTPCPIDResponse

Function documentation

AliTPCPIDResponse()
  The default constructor

~AliTPCPIDResponse()
 Destructor

AliTPCPIDResponse(const AliTPCPIDResponse& )
copy ctor
AliTPCPIDResponse& operator=(const AliTPCPIDResponse& )
assignment
Double_t Bethe(Double_t bg) const
 This is the Bethe-Bloch function normalised to 1 at the minimum
 WARNING
 Simulated and reconstructed Bethe-Bloch differs
           Simulated  curve is the dNprim/dx
           Reconstructed is proportianal dNtot/dx
 Temporary fix for production -  Simple linear correction function
 Future    2 Bethe Bloch formulas needed
           1. for simulation
           2. for reconstructed PID

void SetBetheBlochParameters(Double_t kp1, Double_t kp2, Double_t kp3, Double_t kp4, Double_t kp5)
 Set the parameters of the ALEPH Bethe-Bloch formula

void SetSigma(Float_t res0, Float_t resN2)
 Set the relative resolution  sigma_rel = res0 * sqrt(1+resN2/npoint)

Double_t GetExpectedSignal(Float_t mom, AliPID::EParticleType n = AliPID::kKaon) const
 Deprecated function (for backward compatibility). Please use
 GetExpectedSignal(const AliVTrack* track, AliPID::EParticleType species, ETPCdEdxSource dedxSource,
                   Bool_t correctEta, Bool_t correctMultiplicity);
 instead!


 Calculates the expected PID signal as the function of
 the information stored in the track, for the specified particle type

 At the moment, these signals are just the results of calling the
 Bethe-Bloch formula.
 This can be improved. By taking into account the number of
 assigned clusters and/or the track dip angle, for example.

charge factor. BB goes with z^2, however in reality it is slightly larger (calibration, threshold effects, ...)
 !!! Splines for light nuclei need to be normalised to this factor !!!
Double_t GetExpectedSigma(Float_t mom, Int_t nPoints, AliPID::EParticleType n = AliPID::kKaon) const
 Deprecated function (for backward compatibility). Please use
 GetExpectedSigma(onst AliVTrack* track, AliPID::EParticleType species,
 ETPCdEdxSource dedxSource, Bool_t correctEta) instead!


 Calculates the expected sigma of the PID signal as the function of
 the information stored in the track, for the specified particle type

void SetSigma(Float_t res0, Float_t resN2, AliTPCPIDResponse::ETPCgainScenario gainScenario)
 Set the relative resolution  sigma_rel = res0 * sqrt(1+resN2/npoint)

Double_t GetExpectedSignal(const AliVTrack* track, AliPID::EParticleType species, Double_t dEdx, const TSpline3* responseFunction, Bool_t correctEta, Bool_t correctMultiplicity) const
 Calculates the expected PID signal as the function of
 the information stored in the track and the given parameters,
 for the specified particle type

 At the moment, these signals are just the results of calling the
 Bethe-Bloch formula plus, if desired, taking into account the eta dependence
 and the multiplicity dependence (for PbPb).
 This can be improved. By taking into account the number of
 assigned clusters and/or the track dip angle, for example.

Double_t GetExpectedSignal(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const
 Calculates the expected PID signal as the function of
 the information stored in the track, for the specified particle type

 At the moment, these signals are just the results of calling the
 Bethe-Bloch formula plus, if desired, taking into account the eta dependence
 and the multiplicity dependence (for PbPb).
 This can be improved. By taking into account the number of
 assigned clusters and/or the track dip angle, for example.

TSpline3* GetResponseFunction(AliPID::EParticleType species, AliTPCPIDResponse::ETPCgainScenario gainScenario) const
get response function
TSpline3* GetResponseFunction(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
the splines are stored in an array, different scenarios
void ResetSplines()
reset the array with splines
Int_t ResponseFunctionIndex(AliPID::EParticleType species, AliTPCPIDResponse::ETPCgainScenario gainScenario) const
get the index in fResponseFunctions given type and scenario
void SetResponseFunction(TObject* o, AliPID::EParticleType type, AliTPCPIDResponse::ETPCgainScenario gainScenario)
Double_t GetExpectedSigma(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCgainScenario gainScenario, Double_t dEdx, Int_t nPoints, const TSpline3* responseFunction, Bool_t correctEta, Bool_t correctMultiplicity) const
 Calculates the expected sigma of the PID signal as the function of
 the information stored in the track and the given parameters,
 for the specified particle type

Double_t GetExpectedSigma(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const
 Calculates the expected sigma of the PID signal as the function of
 the information stored in the track, for the specified particle type
 and dedx scenario

Float_t GetNumberOfSigmas(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const
Calculates the number of sigmas of the PID signal from the expected value
for a given particle species in the presence of multiple gain scenarios
inside the TPC
Float_t GetSignalDelta(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE, Bool_t ratio = kFALSE) const
Calculates the number of sigmas of the PID signal from the expected value
for a given particle species in the presence of multiple gain scenarios
inside the TPC
Bool_t ResponseFunctiondEdxN(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource, Double_t& dEdx, Int_t& nPoints, AliTPCPIDResponse::ETPCgainScenario& gainScenario, TSpline3** responseFunction) const
 Calculates the right parameters for PID
   dEdx parametrization for the proper gain scenario, dEdx
   and NPoints used for dEdx
 based on the track geometry (which chambers it crosses) for the specified particle type
 and preferred source of dedx.
 returns true on success
Double_t GetEtaCorrectionFast(const AliVTrack* track, Double_t dEdxSplines) const
 NOTE: For expert use only -> Non-experts are advised to use the function without the "Fast" suffix or stick to AliPIDResponse directly.

 Get eta correction for the given parameters.

Double_t GetEtaCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
 Get eta correction for the given track.

Double_t GetEtaCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
 Get eta corrected dEdx for the given track. For the correction, the expected dEdx of
 the specified species will be used. If the species is set to AliPID::kUnknown, the
 dEdx of the track is used instead.
 WARNING: In the latter case, the eta correction might not be as good as if the
 expected dEdx is used, which is the way the correction factor is designed
 for.
 In any case, one has to decide carefully to which expected signal one wants to
 compare the corrected value - to the corrected or uncorrected.
 Anyhow, a safer way of looking e.g. at the n-sigma is to call
 the corresponding function GetNumberOfSigmas!

Double_t GetSigmaPar1Fast(const AliVTrack* track, AliPID::EParticleType species, Double_t dEdx, const TSpline3* responseFunction) const
 NOTE: For expert use only -> Non-experts are advised to use the function without the "Fast" suffix or stick to AliPIDResponse directly.

 Get parameter 1 of sigma parametrisation of TPC dEdx from the histogram for the given track.

Double_t GetSigmaPar1(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
 Get parameter 1 of sigma parametrisation of TPC dEdx from the histogram for the given track.

Bool_t SetEtaCorrMap(TH2D* hMap)
 Load map for TPC eta correction (a copy is stored and will be deleted automatically).
 If hMap is 0x0,the eta correction will be disabled and kFALSE is returned.
 If the map can be set, kTRUE is returned.

Bool_t SetSigmaParams(TH2D* hSigmaPar1Map, Double_t sigmaPar0)
 Load map for TPC sigma map (a copy is stored and will be deleted automatically):
 Parameter 1 is stored as a 2D map (1/dEdx vs. tanTheta_local) and parameter 0 is
 a constant. If hSigmaPar1Map is 0x0, the old sigma parametrisation will be used
 (and sigmaPar0 is ignored!) and kFALSE is returned.
 If the map can be set, sigmaPar0 is also set and kTRUE will be returned.

Double_t GetTrackTanTheta(const AliVTrack* track) const
 Extract the tanTheta from the information available in the AliVTrack
Double_t GetMultiplicityCorrectionFast(const AliVTrack* track, Double_t dEdxExpected, Int_t multiplicity) const
 NOTE: For expert use only -> Non-experts are advised to use the function without the "Fast" suffix or stick to AliPIDResponse directly.

 Calculate the multiplicity correction factor for this track for the given multiplicity.
 The parameter dEdxExpected should take into account the eta correction already!
Double_t GetMultiplicityCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
 Get multiplicity correction for the given track (w.r.t. the mulitplicity of the current event)

Double_t GetMultiplicityCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
 Get multiplicity corrected dEdx for the given track. For the correction, the expected dEdx of
 the specified species will be used. If the species is set to AliPID::kUnknown, the
 dEdx of the track is used instead.
 WARNING: In the latter case, the correction might not be as good as if the
 expected dEdx is used, which is the way the correction factor is designed
 for.
 In any case, one has to decide carefully to which expected signal one wants to
 compare the corrected value - to the corrected or uncorrected.
 Anyhow, a safer way of looking e.g. at the n-sigma is to call
 the corresponding function GetNumberOfSigmas!

Double_t GetEtaAndMultiplicityCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
 Get multiplicity and eta corrected dEdx for the given track. For the correction,
 the expected dEdx of the specified species will be used. If the species is set
 to AliPID::kUnknown, the dEdx of the track is used instead.
 WARNING: In the latter case, the correction might not be as good as if the
 expected dEdx is used, which is the way the correction factor is designed
 for.
 In any case, one has to decide carefully to which expected signal one wants to
 compare the corrected value - to the corrected or uncorrected.
 Anyhow, a safer way of looking e.g. at the n-sigma is to call
 the corresponding function GetNumberOfSigmas!

Double_t GetMultiplicitySigmaCorrectionFast(Double_t dEdxExpected, Int_t multiplicity) const
 NOTE: For expert use only -> Non-experts are advised to use the function without the "Fast" suffix or stick to AliPIDResponse directly.

 Calculate the multiplicity sigma correction factor for the corresponding expected dEdx and for the given multiplicity.
 The parameter dEdxExpected should take into account the eta correction already!
Double_t GetMultiplicitySigmaCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const
 Get multiplicity sigma correction for the given track (w.r.t. the mulitplicity of the current event)

void ResetMultiplicityCorrectionFunctions()
 Default values: No correction, i.e. overall correction factor should be one
Bool_t sectorNumbersInOut(Double_t* trackPositionInner, Double_t* trackPositionOuter, Float_t& phiIn, Float_t& phiOut, Int_t& in, Int_t& out) const
calculate the sector numbers (equivalent to IROC chamber numbers) a track crosses
for OROC chamber numbers add 36
returned angles are between (0,2pi)
Int_t sectorNumber(Double_t phi) const
calculate sector number
void Print(Option_t* option = "") const
Print info
Float_t MaxClusterRadius(const AliVTrack* track) const
return the radius of the outermost padrow containing a cluster in TPC
for the track
Bool_t TrackApex(const AliVTrack* track, Float_t magField, Double_t* position) const
calculate the coordinates of the apex of the track
Double_t EvaldEdxSpline(Double_t bg, Int_t entry)
 Evaluate the dEdx response for given entry

Bool_t RegisterSpline(const char* name, Int_t index)
 register spline to be used for drawing comparisons

void SetMip(Float_t mip)
Better prevent user from setting fMIP != 50. because fMIP set fix to 50 for much other code:
{ fMIP = mip; }
void SetUseDatabase(Bool_t useDatabase)
{ fUseDatabase = useDatabase;}
Bool_t GetUseDatabase() const
{ return fUseDatabase;}
void SetResponseFunction(AliPID::EParticleType type, TObject *const o)
{ fResponseFunctions.AddAt(o,(Int_t)type); }
const TObject * GetResponseFunction(AliPID::EParticleType type)
{ return fResponseFunctions.At((Int_t)type); }
void SetVoltage(Int_t n, Float_t v)
{fVoltageMap[n]=v;}
void SetVoltageMap(const TVectorF& a)
Float_t GetVoltage(Int_t n) const
{return fVoltageMap[n];}
void SetLowGainIROCthreshold(Float_t v)
void SetBadIROCthreshold(Float_t v)
void SetLowGainOROCthreshold(Float_t v)
void SetBadOROCthreshold(Float_t v)
void SetMaxBadLengthFraction(Float_t f)
void SetMagField(Double_t mf)
{ fMagField=mf; }
const TH2D* GetEtaCorrMap() const
{ return fhEtaCorr; }
const TH2D* GetSigmaPar1Map() const
{ return fhEtaSigmaPar1; }
Double_t GetSigmaPar0() const
{ return fSigmaPar0; }
const TF1* GetMultiplicityCorrectionFunction() const
void SetParameterMultiplicityCorrection(Int_t parIndex, Double_t parValue)
{ if (fCorrFuncMultiplicity) fCorrFuncMultiplicity->SetParameter(parIndex, parValue); }
const TF1* GetMultiplicityCorrectionFunctionTanTheta() const
void SetParameterMultiplicityCorrectionTanTheta(Int_t parIndex, Double_t parValue)
{ if (fCorrFuncMultiplicityTanTheta) fCorrFuncMultiplicityTanTheta->SetParameter(parIndex, parValue); }
const TF1* GetMultiplicitySigmaCorrectionFunction() const
void SetParameterMultiplicitySigmaCorrection(Int_t parIndex, Double_t parValue)
{ if (fCorrFuncSigmaMultiplicity) fCorrFuncSigmaMultiplicity->SetParameter(parIndex, parValue); }
void SetCurrentEventMultiplicity(Int_t value)
Int_t GetCurrentEventMultiplicity() const
Float_t GetNumberOfSigmas(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const
AliTPCPIDResponse::EChamberStatus TrackStatus(const AliVTrack* track, Int_t layer) const
const char* GainScenarioName(Int_t n)
Double_t GetMIP() const
{ return fMIP;}
Float_t GetRes0() const
{ return fRes0[0]; }
Float_t GetResN2() const
{ return fResN2[0]; }
Float_t GetRes0(AliTPCPIDResponse::ETPCgainScenario s) const
{ return fRes0[s]; }
Float_t GetResN2(AliTPCPIDResponse::ETPCgainScenario s) const
{ return fResN2[s]; }
Double_t SEvaldEdx(Double_t bg, Int_t entry)
{ return (fgInstance!=0)? fgInstance->EvaldEdxSpline(bg,entry):0;}