ROOT logo
AliRoot » STEER » STEER » AliRelAlignerKalman

class AliRelAlignerKalman: public TObject


    Kalman filter based aligner:
    Finds alignement constants for  two tracking volumes (by default ITS
    and TPC)
    Determines the inverse transformation of the second volume (TPC)
    with respect to the first (ITS) (how to realign TPC to ITS)
    by measuring the residual between the 2 tracks.
    Additionally calculates some callibration parameters for TPC
    Fit parameters are:
    - 3 shifts, x,y,z
    - 3 Cardan angles, psi, theta, phi (see definition in alignment docs),
    - TPC drift velocity correction,
    - TPC time offset correction.

    Basic usage:
    When aligning two volumes, at any given time a single instance of
    the class should be active. The fit of the parameters is updated
    by adding new data using one of the Add.... methods:

    In collision events add an ESD event to update the fit (adds all tracks):

        Bool_t AddESDevent( AliESDevent* pTrack );

    or add each individual track

        AddESDtrack( AliESDtrack* pTrack );

    For cosmic data, the assumption is that the tracking is done twice:
    once global and once only ITS and the tracklets are saved inside
    one AliESDEvent. The method

        Bool_t AddCosmicEvent( AliESDEvent* pEvent );

    then searches the event for matching tracklets and upon succes it updates.
    One cosmic ideally triggers two updates: for the upper and lower half of
    the cosmic (upper ITS tracklet+upper TPC tracklet, idem dito for lower)

    by default give misalignment parameters for TPC as they appear to be.
    TPC calibration parameters are always given as correction to values used in reco.


    Expert options:
    look at AddESDevent() and AddCosmicEvent() to get the idea of how the
    aligner works, it's safe to repeat the needed steps outside of the class,
    only public methods are used.

    Origin: Mikolaj Krzewicki, Nikhef, Mikolaj.Krzewicki@cern.ch


Function Members (Methods)

public:
AliRelAlignerKalman()
AliRelAlignerKalman(const AliRelAlignerKalman& a)
virtual~AliRelAlignerKalman()
voidTObject::AbstractMethod(const char* method) const
Bool_tAddCosmicEvent(const AliESDEvent* pEvent)
Bool_tAddESDevent(const AliESDEvent* pEvent)
Bool_tAddESDtrack(const AliESDtrack* pTrack)
Bool_tAddTrackParams(const AliExternalTrackParam* p1, const AliExternalTrackParam* p2)
static voidAngles(TVectorD& angles, const TMatrixD& rotmat)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Int_tCheckCovariance()
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tCompare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
Bool_tCorrectTrack(AliExternalTrackParam* tr, const TVectorD& misalignment) 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
Bool_tFindCosmicTrackletNumbersInEvent(TArrayI& outITStracksTArr, TArrayI& outTPCtracksTArr, const AliESDEvent* pEvent)
Int_tFindMatchingTracks(TObjArray& arrITS, TObjArray& arrTPC, AliESDEvent* pESD)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
const Double_t*GetDeltaArr() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
TMatrixD*GetH() const
virtual const char*TObject::GetIconName() const
Double_tGetMagField() const
TVectorD*GetMeasurement()
voidGetMeasurement(TVectorD& mes) const
Double_t*GetMeasurementArr() const
TMatrixDSym*GetMeasurementCov() const
voidGetMeasurementCov(TMatrixDSym& cov) const
Double_t*GetMeasurementCovArr() const
TVectorD*GetMeasurementPrediction() const
virtual const char*TObject::GetName() const
Int_tGetNMerges() const
Int_tGetNMergesFailed() const
Int_tGetNOutliers() const
Int_tGetNOutliersSigma2Median() const
Int_tGetNTracks() const
Int_tGetNUpdates() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Double_tGetPhi() const
Double_tGetPhiErr() const
Double_tGetPsi() const
Double_tGetPsiErr() const
Int_tGetRunNumber() const
voidGetSeed(TVectorD& seed, TMatrixDSym& seedCov) const
TVectorD*GetState() const
voidGetState(TVectorD& state) const
Double_t*GetStateArr() const
TMatrixDSym*GetStateCov() const
voidGetStateCov(TMatrixDSym& cov) const
Double_t*GetStateCovArr() const
Double_tGetTheta() const
Double_tGetThetaErr() const
UInt_tGetTimeStamp() const
virtual const char*TObject::GetTitle() const
Double_tGetTPCt0() const
Double_tGetTPCt0Err() const
Double_tGetTPCvdCorr() const
Double_tGetTPCvdCorrErr() const
Double_tGetTPCvdY() const
Double_tGetTPCvdYErr() const
const AliExternalTrackParam*GetTrackParams1() const
const AliExternalTrackParam*GetTrackParams2() const
virtual UInt_tTObject::GetUniqueID() const
Double_tGetX() const
Double_tGetXErr() const
Double_tGetY() const
Double_tGetYErr() const
Double_tGetZ() const
Double_tGetZErr() 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
Bool_tIsPositiveDefinite(const TMatrixD& mat) const
virtual Bool_tIsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
Bool_tMerge(const AliRelAlignerKalman* al)
Long64_tMerge(TCollection* list)
Bool_tMisalignTrack(AliExternalTrackParam* tr, const TVectorD& misalignment) 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)
AliRelAlignerKalman&operator=(const AliRelAlignerKalman& a)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* option = "") const
voidPrintCorrelationMatrix()
voidPrintSystemMatrix()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidReset()
voidTObject::ResetBit(UInt_t f)
voidResetCovariance(const Double_t number = 0.)
voidResetTPCparamsCovariance(const Double_t number = 0.)
static voidRotMat(TMatrixD& R, const TVectorD& angles)
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)
voidSetCorrectionMode(const Bool_t mode = kTRUE)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetMagField(const Double_t f)
voidSetMaxMatchingAngle(const Double_t m)
voidSetMaxMatchingDistance(const Double_t m)
voidSetMeasurement(const TVectorD& mes)
voidSetMeasurementCov(const TMatrixDSym& cov)
voidSetMinPointsVol1(const Int_t min)
voidSetMinPointsVol2(const Int_t min)
voidSetNumericalParanoia(const Bool_t mode = kFALSE)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetOutRejSigma(const Double_t a = 2.)
voidSetOutRejSigma2Median(const Double_t s)
voidSetPoint2Track(Bool_t o)
voidSetQ(const Double_t Q = 1e-10)
voidSetRejectOutliers(const Bool_t r = kTRUE)
voidSetRejectOutliersSigma2Median(const Bool_t b = kTRUE)
voidSetRequireMatchInTPC(const Bool_t s = kTRUE)
voidSetRunNumber(const Int_t rn)
voidSetSeed(const TVectorD& seed, const TMatrixDSym& seedCov)
voidSetState(const TVectorD& param)
voidSetStateCov(const TMatrixDSym& cov)
voidSetTimeStamp(const UInt_t ts)
voidSetTPCvd(const Float_t v)
voidSetTPCZLengthA(const Double_t l)
voidSetTPCZLengthC(const Double_t l)
Bool_tSetTrackParams(const AliExternalTrackParam* exparam1, const AliExternalTrackParam* exparam2)
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
static voidTMatrixDSymFromTMatrixD(TMatrixDSym& matsym, const TMatrixD& mat)
Bool_tUpdate()
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
Bool_tIsOutlier(const TVectorD& update, const TMatrixDSym& covmatrix)
Bool_tIsOutlierSigma2Median(const AliExternalTrackParam* pITS, const AliExternalTrackParam* pTPC)
voidTObject::MakeZombie()
Bool_tPredictMeasurement(TVectorD& z, const TVectorD& x)
Bool_tPrepareMeasurement()
Bool_tPreparePrediction()
Bool_tPrepareSystemMatrix()
Bool_tUpdateEstimateKalman()

Data Members

private:
Bool_tfCorrectionModecalculate corrective transform for TPC (or monitor actual TPC misal params)
Bool_tfCutstrack cuts?
Double_tfDelta[9]array with differentials for calculating derivatives for every parameter(see PrepareSystemMatrix())
Double_tfMagFieldmagnetic field
Double_tfMaxMatchingAnglecuts
Double_tfMaxMatchingDistancecuts
Double_tfMaxPtmax momentum of track for track cuts
Int_tfMinPointsVol1mininum number of points in volume 1
Int_tfMinPointsVol2mininum number of points in volume 2
Double_tfMinPtmin momentum of track for track cuts
Int_tfNMatchedCosmicsnumber of cosmic events with matching tracklets (good cosmics)
Int_tfNMatchedTPCtrackletsnumber of cosmic events with 2 matching TPC tracklets
Int_tfNMeasurementParamshow many measurables
Int_tfNMergeshow many succesful merges
Int_tfNMergesFailedhow many merges failed
Int_tfNOutliersnumber of outliers
Int_tfNOutliersSigma2Mediannumber of rejected inputs
Int_tfNProcessedEventsnumber of processed events
Int_tfNTracksnumber of processed tracks
Int_tfNUpdatesnumber of successful Kalman updates
Bool_tfNumericalParanoiawhether to perform additional checks for numerical stability
Double_tfOutRejSigma2Mediannsigmas to median of input residual distribution
Double_tfOutRejSigmasnumber of sigmas for outlier rejection
TMatrixD*fPH!System measurement matrix
TVectorD*fPMeasurement!the measurement vec for Kalman filter (theta,phi,x,z)
TMatrixDSym*fPMeasurementCov!measurement vec cvariance
TVectorD*fPMeasurementPrediction!prediction of the measurement
AliExternalTrackParam*fPTrackParam1!local track parameters
AliExternalTrackParam*fPTrackParam2!local track parameters
TVectorD*fPXSystem (fit) parameters (phi, theta, psi, x, y, z, driftcorr, driftoffset )
TMatrixDSym*fPXcovcovariance matrix of system parameters
Double_tfQ!measure for system noise
Bool_tfRejectOutlierswhether to do outlier rejection in the Kalman filter
Bool_tfRejectOutliersSigma2Medianwhether to reject input based on distance to median
Bool_tfRequireMatchInTPCwhen looking for a cosmic in event, require that TPC has 2 matching segments
Double_t*fResArrSigma2Median[4]!holds residuals for median based outlier removal
Int_tfRunNumberrun number
Double_tfTPCZLengthATPC length side A
Double_tfTPCZLengthCTPC length side C
Double_tfTPCvdTPC drift velocity
UInt_tfTimeStamptime stamp
Bool_tfYZOnlywhether to consider only yz without directions.
static const Int_tfgkNSystemParamshow many fit parameters
static const Int_tfgkNtracksSigma2Medianhow many sets for median and rms

Class Charts

Inheritance Chart:
TObject
AliRelAlignerKalman

Function documentation

AliRelAlignerKalman()
Default constructor
AliRelAlignerKalman(const AliRelAlignerKalman& a)
copy constructor
AliRelAlignerKalman& operator=(const AliRelAlignerKalman& a)
assignment operator
~AliRelAlignerKalman()
destructor
Bool_t AddESDevent(const AliESDEvent* pEvent)
Add all tracks in an ESD event
Bool_t AddESDtrack(const AliESDtrack* pTrack)
Adds a full track, returns true if results in a new estimate
  gets the inner TPC parameters from AliESDTrack::GetInnerParam()
  gets the outer ITS parameters from AliESDfriendTrack::GetITSout()
Bool_t AddTrackParams(const AliExternalTrackParam* p1, const AliExternalTrackParam* p2)
Update the estimate using new matching tracklets
Bool_t AddCosmicEvent(const AliESDEvent* pEvent)
Add an cosmic with separately tracked ITS and TPC parts, do trackmatching
void SetPoint2Track(Bool_t o)
void Print(Option_t* option = "") const
Print some useful info
void PrintSystemMatrix()
Print the system matrix for this measurement
Bool_t SetTrackParams(const AliExternalTrackParam* exparam1, const AliExternalTrackParam* exparam2)
Set the parameters, exparam1 will normally be ITS and exparam 2 tht TPC
Bool_t Update()
perform the update
void RotMat(TMatrixD& R, const TVectorD& angles)
Get Rotation matrix R given the Cardan angles psi, theta, phi (around x, y, z).
Bool_t PrepareMeasurement()
Calculate the residuals and their covariance matrix
Bool_t PrepareSystemMatrix()
Calculate the system matrix for the Kalman filter
approximate the system using as reference the track in the first volume
Bool_t PreparePrediction()
Prepare the prediction of the measurement using state vector
Bool_t PredictMeasurement(TVectorD& z, const TVectorD& x)
 Implements a system model for the Kalman fit
 pred is [dy,dz,dsinphi,dtgl]
 state is [psi,theta,phi,x,y,z,driftTPC,offsetTPC]
 note: the measurement is in a local frame, so the prediction also has to be
 note: state is the misalignment in global reference system
Bool_t UpdateEstimateKalman()
Kalman estimation of noisy constants: in the model A=1
The arguments are (following the usual convention):
  fPX - the state vector (parameters)
  fPXcov - the state covariance matrix (parameter errors)
  fPMeasurement - measurement vector
  fPMeasurementCov - measurement covariance matrix
  fPH - measurement model matrix ( fPMeasurement = Hx + v ) v being measurement noise (error fR)
Bool_t IsOutlier(const TVectorD& update, const TMatrixDSym& covmatrix)
check whether an update is an outlier given the covariance matrix of the fit
Bool_t IsOutlierSigma2Median(const AliExternalTrackParam* pITS, const AliExternalTrackParam* pTPC)
check if the input residuals are not too far off their median
Bool_t IsPositiveDefinite(const TMatrixD& mat) const
check for positive definiteness
void TMatrixDSymFromTMatrixD(TMatrixDSym& matsym, const TMatrixD& mat)
Produce a valid symmetric matrix out of an almost symmetric TMatrixD
void Angles(TVectorD& angles, const TMatrixD& rotmat)
Calculate the Cardan angles (psi,theta,phi) from rotation matrix
b = R*a
void PrintCorrelationMatrix()
Print the correlation matrix for the fitted parameters
Bool_t FindCosmicTrackletNumbersInEvent(TArrayI& outITStracksTArr, TArrayI& outTPCtracksTArr, const AliESDEvent* pEvent)
Find matching track segments in an event with tracks in TPC and ITS(standalone)
Bool_t CorrectTrack(AliExternalTrackParam* tr, const TVectorD& misalignment) const
implements the system model -
applies correction for misalignment and calibration to track
track needs to be already propagated to the global reference plane
Bool_t MisalignTrack(AliExternalTrackParam* tr, const TVectorD& misalignment) const
implements the system model -
applies misalignment and miscalibration to reference track
trackparams have to be at the global reference plane
void Reset()
full reset to defaults
void ResetCovariance(const Double_t number = 0.)
Resets the covariance to the default if arg=0 or resets the off diagonals
to zero and releases the diagonals by factor arg.
void ResetTPCparamsCovariance(const Double_t number = 0.)
Resets the covariance to the default if arg=0 or resets the off diagonals
to zero and releases the diagonals by factor arg.
Bool_t Merge(const AliRelAlignerKalman* al)
Merge two aligners
Long64_t Merge(TCollection* list)
merge all aligners in the collection
Int_t Compare(const TObject* obj) const
Int_t FindMatchingTracks(TObjArray& arrITS, TObjArray& arrTPC, AliESDEvent* pESD)
find matching tracks and return tobjarrays with the params
void SetRejectOutliersSigma2Median(const Bool_t b = kTRUE)
Sets up or destroys the memory hungry array to hold the statistics
for data rejection with median
Int_t CheckCovariance()
 check covariance matrix
 Return values:
         -1    - everything OK
          >=0  - index of "corrupted" element in the covariance matrix
Double_t GetPsi() const
{return (*fPX)(0);}
Double_t GetTheta() const
{return (*fPX)(1);}
Double_t GetPhi() const
{return (*fPX)(2);}
Double_t GetX() const
{return (*fPX)(3);}
Double_t GetY() const
{return (*fPX)(4);}
Double_t GetZ() const
{return (*fPX)(5);}
Double_t GetTPCvdCorr() const
{return (*fPX)(6);}
Double_t GetTPCt0() const
{return (*fPX)(7);}
Double_t GetTPCvdY() const
{if (fgkNSystemParams>8) return (*fPX)(8); else return 0.0;}
Double_t GetPsiErr() const
{return TMath::Sqrt((*fPXcov)(0,0));}
Double_t GetThetaErr() const
{return TMath::Sqrt((*fPXcov)(1,1));}
Double_t GetPhiErr() const
{return TMath::Sqrt((*fPXcov)(2,2));}
Double_t GetXErr() const
{return TMath::Sqrt((*fPXcov)(3,3));}
Double_t GetYErr() const
{return TMath::Sqrt((*fPXcov)(4,4));}
Double_t GetZErr() const
{return TMath::Sqrt((*fPXcov)(5,5));}
Double_t GetTPCvdCorrErr() const
{return TMath::Sqrt((*fPXcov)(6,6));}
Double_t GetTPCt0Err() const
{return TMath::Sqrt((*fPXcov)(7,7));}
Double_t GetTPCvdYErr() const
{if (fgkNSystemParams>8) return TMath::Sqrt((*fPXcov)(8,8)); else return 0.0;}
void GetMeasurement(TVectorD& mes) const
{ mes = *fPMeasurement; }
TVectorD* GetMeasurement()
{ return fPMeasurement; }
void GetMeasurementCov(TMatrixDSym& cov) const
{ cov = *fPMeasurementCov; }
void SetMeasurement(const TVectorD& mes)
{*fPMeasurement = mes;}
void SetMeasurementCov(const TMatrixDSym& cov)
TMatrixDSym* GetMeasurementCov() const
{ return fPMeasurementCov; }
void GetState(TVectorD& state) const
{ state = *fPX; }
TVectorD* GetState() const
{ return fPX; }
void GetStateCov(TMatrixDSym& cov) const
{ cov = *fPXcov; }
void SetState(const TVectorD& param)
{*fPX = param;}
void SetStateCov(const TMatrixDSym& cov)
{*fPXcov = cov;}
TMatrixDSym* GetStateCov() const
{ return fPXcov; }
void GetSeed(TVectorD& seed, TMatrixDSym& seedCov) const
{ seed = *fPX; seedCov = *fPXcov; }
void SetSeed(const TVectorD& seed, const TMatrixDSym& seedCov)
{*fPX = seed; *fPXcov = seedCov; }
void SetMagField(const Double_t f)
{ fMagField=f; }
Double_t GetMagField() const
{ return fMagField; }
Double_t* GetStateArr() const
{ return fPX->GetMatrixArray(); }
Double_t* GetStateCovArr() const
{ return fPXcov->GetMatrixArray(); }
Double_t* GetMeasurementArr() const
{ return fPMeasurement->GetMatrixArray(); }
Double_t* GetMeasurementCovArr() const
{ return fPMeasurementCov->GetMatrixArray(); }
TMatrixD* GetH() const
{ return fPH; }
TVectorD* GetMeasurementPrediction() const
const Double_t* GetDeltaArr() const
{return fDelta;}
void SetNumericalParanoia(const Bool_t mode = kFALSE)
void SetCorrectionMode(const Bool_t mode = kTRUE)
{ fCorrectionMode=mode; }
void SetOutRejSigma(const Double_t a = 2.)
{ fOutRejSigmas = a; }
void SetRejectOutliers(const Bool_t r = kTRUE)
void SetOutRejSigma2Median(const Double_t s)
const AliExternalTrackParam* GetTrackParams1() const
{return fPTrackParam1;}
const AliExternalTrackParam* GetTrackParams2() const
{return fPTrackParam2;}
void SetMinPointsVol1(const Int_t min)
void SetMinPointsVol2(const Int_t min)
void SetRequireMatchInTPC(const Bool_t s = kTRUE)
void SetQ(const Double_t Q = 1e-10)
{ fQ = Q; }
void SetMaxMatchingDistance(const Double_t m)
void SetMaxMatchingAngle(const Double_t m)
void SetTPCvd(const Float_t v)
{fTPCvd=v;}
void SetTPCZLengthA(const Double_t l)
void SetTPCZLengthC(const Double_t l)
void SetTimeStamp(const UInt_t ts)
{ fTimeStamp = ts; }
UInt_t GetTimeStamp() const
{return fTimeStamp;}
void SetRunNumber(const Int_t rn)
{ fRunNumber = rn; }
Int_t GetRunNumber() const
{return fRunNumber;}
Bool_t IsSortable() const
{ return kTRUE; }
Int_t GetNTracks() const
{return fNTracks;}
Int_t GetNUpdates() const
{return fNUpdates;}
Int_t GetNOutliers() const
{return fNOutliers;}
Int_t GetNOutliersSigma2Median() const
Int_t GetNMerges() const
{return fNMerges;}
Int_t GetNMergesFailed() const
{return fNMergesFailed;}