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
AliTPCPIDResponse() | |
AliTPCPIDResponse(const AliTPCPIDResponse&) | |
virtual | ~AliTPCPIDResponse() |
void | TObject::AbstractMethod(const char* method) const |
virtual void | TObject::AppendPad(Option_t* option = "") |
Double_t | Bethe(Double_t bg) const |
virtual void | TObject::Browse(TBrowser* b) |
static TClass* | Class() |
virtual const char* | TObject::ClassName() const |
virtual void | TNamed::Clear(Option_t* option = "") |
virtual TObject* | TNamed::Clone(const char* newname = "") const |
virtual Int_t | TNamed::Compare(const TObject* obj) const |
virtual void | TNamed::Copy(TObject& named) 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 |
Double_t | EvaldEdxSpline(Double_t bg, Int_t entry) |
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 void | TNamed::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_t | GetCurrentEventMultiplicity() const |
virtual Option_t* | TObject::GetDrawOption() const |
static Long_t | TObject::GetDtorOnly() |
Double_t | GetEtaAndMultiplicityCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const |
Double_t | GetEtaCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const |
Double_t | GetEtaCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const |
Double_t | GetEtaCorrectionFast(const AliVTrack* track, Double_t dEdxSplines) const |
const TH2D* | GetEtaCorrMap() const |
Double_t | GetExpectedSigma(Float_t mom, Int_t nPoints, AliPID::EParticleType n = AliPID::kKaon) const |
Double_t | GetExpectedSigma(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault, Bool_t correctEta = kFALSE, Bool_t correctMultiplicity = kFALSE) const |
Double_t | GetExpectedSignal(Float_t mom, AliPID::EParticleType n = AliPID::kKaon) const |
Double_t | GetExpectedSignal(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_t | GetMIP() const |
Double_t | GetMultiplicityCorrectedTrackdEdx(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const |
Double_t | GetMultiplicityCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const |
Double_t | GetMultiplicityCorrectionFast(const AliVTrack* track, Double_t dEdxExpected, Int_t multiplicity) const |
const TF1* | GetMultiplicityCorrectionFunction() const |
const TF1* | GetMultiplicityCorrectionFunctionTanTheta() const |
Double_t | GetMultiplicitySigmaCorrection(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const |
Double_t | GetMultiplicitySigmaCorrectionFast(Double_t dEdxExpected, Int_t multiplicity) const |
const TF1* | GetMultiplicitySigmaCorrectionFunction() const |
virtual const char* | TNamed::GetName() const |
Float_t | GetNumberOfSigmas(Float_t mom, Float_t dEdx, Int_t nPoints, AliPID::EParticleType n = AliPID::kKaon) const |
Float_t | GetNumberOfSigmas(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_t | TObject::GetObjectStat() |
virtual Option_t* | TObject::GetOption() const |
Float_t | GetRes0() const |
Float_t | GetRes0(AliTPCPIDResponse::ETPCgainScenario s) const |
Float_t | GetResN2() const |
Float_t | GetResN2(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_t | GetSigmaPar0() const |
Double_t | GetSigmaPar1(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource = kdEdxDefault) const |
Double_t | GetSigmaPar1Fast(const AliVTrack* track, AliPID::EParticleType species, Double_t dEdx, const TSpline3* responseFunction) const |
const TH2D* | GetSigmaPar1Map() const |
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 |
virtual const char* | TNamed::GetTitle() const |
Double_t | GetTrackTanTheta(const AliVTrack* track) const |
virtual UInt_t | TObject::GetUniqueID() const |
Bool_t | GetUseDatabase() const |
Float_t | GetVoltage(Int_t n) const |
virtual Bool_t | TObject::HandleTimer(TTimer* timer) |
virtual ULong_t | TNamed::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 | TNamed::IsSortable() const |
Bool_t | TObject::IsZombie() const |
virtual void | TNamed::ls(Option_t* option = "") const |
Float_t | MaxClusterRadius(const AliVTrack* track) 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) |
AliTPCPIDResponse& | operator=(const AliTPCPIDResponse&) |
virtual void | TObject::Paint(Option_t* option = "") |
virtual void | TObject::Pop() |
virtual void | Print(Option_t* option = "") const |
virtual Int_t | TObject::Read(const char* name) |
virtual void | TObject::RecursiveRemove(TObject* obj) |
Bool_t | RegisterSpline(const char* name, Int_t index) |
void | TObject::ResetBit(UInt_t f) |
void | ResetMultiplicityCorrectionFunctions() |
void | ResetSplines() |
Bool_t | ResponseFunctiondEdxN(const AliVTrack* track, AliPID::EParticleType species, AliTPCPIDResponse::ETPCdEdxSource dedxSource, Double_t& dEdx, Int_t& nPoints, AliTPCPIDResponse::ETPCgainScenario& gainScenario, TSpline3** responseFunction) const |
Int_t | ResponseFunctionIndex(AliPID::EParticleType species, AliTPCPIDResponse::ETPCgainScenario gainScenario) const |
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 = "") |
Bool_t | sectorNumbersInOut(Double_t* trackPositionInner, Double_t* trackPositionOuter, Float_t& phiIn, Float_t& phiOut, Int_t& in, Int_t& out) const |
void | SetBadIROCthreshold(Float_t v) |
void | SetBadOROCthreshold(Float_t v) |
void | SetBetheBlochParameters(Double_t kp1, Double_t kp2, Double_t kp3, Double_t kp4, Double_t kp5) |
void | TObject::SetBit(UInt_t f) |
void | TObject::SetBit(UInt_t f, Bool_t set) |
void | SetCurrentEventMultiplicity(Int_t value) |
virtual void | TObject::SetDrawOption(Option_t* option = "")MENU |
static void | TObject::SetDtorOnly(void* obj) |
Bool_t | SetEtaCorrMap(TH2D* hMap) |
void | SetLowGainIROCthreshold(Float_t v) |
void | SetLowGainOROCthreshold(Float_t v) |
void | SetMagField(Double_t mf) |
void | SetMaxBadLengthFraction(Float_t f) |
void | SetMip(Float_t mip) |
virtual void | TNamed::SetName(const char* name)MENU |
virtual void | TNamed::SetNameTitle(const char* name, const char* title) |
static void | TObject::SetObjectStat(Bool_t stat) |
void | SetParameterMultiplicityCorrection(Int_t parIndex, Double_t parValue) |
void | SetParameterMultiplicityCorrectionTanTheta(Int_t parIndex, Double_t parValue) |
void | SetParameterMultiplicitySigmaCorrection(Int_t parIndex, Double_t parValue) |
void | SetResponseFunction(AliPID::EParticleType type, TObject *const o) |
void | SetResponseFunction(TObject* o, AliPID::EParticleType type, AliTPCPIDResponse::ETPCgainScenario gainScenario) |
void | SetSigma(Float_t res0, Float_t resN2) |
void | SetSigma(Float_t res0, Float_t resN2, AliTPCPIDResponse::ETPCgainScenario gainScenario) |
Bool_t | SetSigmaParams(TH2D* hSigmaPar1Map, Double_t sigmaPar0) |
virtual void | TNamed::SetTitle(const char* title = "")MENU |
virtual void | TObject::SetUniqueID(UInt_t uid) |
void | SetUseDatabase(Bool_t useDatabase) |
void | SetVoltage(Int_t n, Float_t v) |
void | SetVoltageMap(const TVectorF& a) |
static Double_t | SEvaldEdx(Double_t bg, Int_t entry) |
virtual void | ShowMembers(TMemberInspector&) |
virtual Int_t | TNamed::Sizeof() const |
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 |
Bool_t | TrackApex(const AliVTrack* track, Float_t magField, Double_t* position) const |
AliTPCPIDResponse::EChamberStatus | TrackStatus(const AliVTrack* track, Int_t layer) const |
virtual void | TObject::UseCurrentStyle() |
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 |
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 |
Double_t | GetExpectedSignal(const AliVTrack* track, AliPID::EParticleType species, Double_t dEdx, const TSpline3* responseFunction, Bool_t correctEta, Bool_t correctMultiplicity) const |
void | TObject::MakeZombie() |
Int_t | sectorNumber(Double_t phi) const |
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 | ||
}; |
static const Int_t | fgkNumberOfGainScenarios | |
static const Int_t | fgkNumberOfParticleSpecies | |
static const Int_t | fgkNumberOfdEdxSourceScenarios |
TString | TNamed::fName | object identifier |
TString | TNamed::fTitle | object title |
Float_t | fBadIROCthreshhold | voltage threshold for bad IROCS |
Float_t | fBadOROCthreshhold | voltage 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_t | fCurrentEventMultiplicity | Multiplicity of the current event |
Double_t | fKp1 | Parameters |
Double_t | fKp2 | of |
Double_t | fKp3 | the ALEPH |
Double_t | fKp4 | Bethe-Bloch |
Double_t | fKp5 | formula |
Float_t | fLowGainIROCthreshold | voltage threshold below which the IROC is considered low gain |
Float_t | fLowGainOROCthreshold | voltage threshold below which the OROC is considered low gain |
Float_t | fMIP | dEdx for MIP |
Double_t | fMagField | ! Magnetic field |
Float_t | fMaxBadLengthFraction | the maximum allowed fraction of track length in a bad sector. |
Float_t | fRes0[3] | relative dEdx resolution rel sigma = fRes0*sqrt(1+fResN2/npoint) |
Float_t | fResN2[3] | relative Npoint dependence rel sigma = fRes0*sqrt(1+fResN2/npoint) |
TObjArray | fResponseFunctions | ! ObjArray of response functions individually for each particle |
Double_t | fSigmaPar0 | Parameter 0 of the dEdx sigma parametrisation |
TObjArray | fSplineArray | array of registered splines |
Bool_t | fUseDatabase | flag if fine-tuned database-response or simple ALEPH BB should be used |
TVectorF | fVoltageMap | !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 |
Inheritance Chart: | ||||||||
|
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
Set the parameters of the ALEPH Bethe-Bloch formula
Set the relative resolution sigma_rel = res0 * sqrt(1+resN2/npoint)
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 !!!
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
Set the relative resolution sigma_rel = res0 * sqrt(1+resN2/npoint)
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.
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.
get response function
the splines are stored in an array, different scenarios
get the index in fResponseFunctions given type and scenario
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
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
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
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
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
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.
Get eta correction for the given track.
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!
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.
Get parameter 1 of sigma parametrisation of TPC dEdx from the histogram for the given track.
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.
Extract the tanTheta from the information available in the AliVTrack
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!
Get multiplicity correction for the given track (w.r.t. the mulitplicity of the current event)
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!
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!
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!
Get multiplicity sigma correction for the given track (w.r.t. the mulitplicity of the current event)
Default values: No correction, i.e. overall correction factor should be one
calculate the sector numbers (equivalent to IROC chamber numbers) a track crosses for OROC chamber numbers add 36 returned angles are between (0,2pi)
return the radius of the outermost padrow containing a cluster in TPC for the track
calculate the coordinates of the apex of the track
register spline to be used for drawing comparisons
{ fResponseFunctions.AddAt(o,(Int_t)type); }
{ return fResponseFunctions.At((Int_t)type); }
{ if (fCorrFuncMultiplicity) fCorrFuncMultiplicity->SetParameter(parIndex, parValue); }
{ return fCorrFuncMultiplicityTanTheta; }
{ if (fCorrFuncMultiplicityTanTheta) fCorrFuncMultiplicityTanTheta->SetParameter(parIndex, parValue); }
{ if (fCorrFuncSigmaMultiplicity) fCorrFuncSigmaMultiplicity->SetParameter(parIndex, parValue); }
{return fgkGainScenarioName[(n>fgkNumberOfGainScenarios)?fgkNumberOfGainScenarios:n];}
{ return (fgInstance!=0)? fgInstance->EvaldEdxSpline(bg,entry):0;}