ROOT logo
AliRoot » ITS » AliITSAlignMille

class AliITSAlignMille: public TObject

 \class AliITSAlignMille
 Alignment class for the ALICE ITS detector

 ITS specific alignment class which interface to AliMillepede.
 For each track ProcessTrack calculates the local and global derivatives
 at each hit and fill the corresponding local equations. Provide methods for
 fixing or constraining detection elements for best results.

 \author M. Lunardon (thanks to J. Castillo)

Function Members (Methods)

public:
AliITSAlignMille(const Char_t* configFilename = "AliITSAlignMille.conf", Bool_t initmille = kTRUE)
virtual~AliITSAlignMille()
voidTObject::AbstractMethod(const char* method) const
voidAddConstraint(Double_t* factor, Double_t value)
Int_tAddLocalEquation(AliITSAlignMilleData& m)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Int_tCalcDerivatives(Int_t paridx, Bool_t islpar)
Int_tCalcIntersectionPoint(const Double_t* lpar, const Double_t* gpar)
Int_tCheckCurrentTrack()
Bool_tCheckVolumeID(UShort_t voluid) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
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
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidFixParameter(Int_t param, Double_t value)
Double_tGetBField() const
const AliTrackPoint*GetCurrentCluster() const
AliITSAlignMilleModule*GetCurrentModule() const
TGeoHMatrix*GetCurrentModuleHMatrix() const
Int_tGetCurrentModuleIndex() const
Int_tGetCurrentModuleInternalIndex() const
const Double_t*GetCurrentModuleTranslation() const
AliTrackPointArray*GetCurrentTrack() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
const Char_t*GetGeometryFileName()
const Double_t*GetGlobalIntersectionPoint() const
virtual const char*TObject::GetIconName() const
Double_tGetLocalDX() const
Double_tGetLocalDZ() const
const Double_t*GetLocalInitParam() const
const Double_t*GetLocalIntersectionPoint() const
const Double_t*GetMeasLoc() const
AliITSAlignMilleModule*GetMilleModule(UShort_t voluid) const
Int_tGetModuleIndex(const Char_t* symname)
Int_tGetModuleIndex(UShort_t voluid)
const Int_t*GetModuleIndexArray() const
UShort_tGetModuleVolumeID(const Char_t* symname)
UShort_tGetModuleVolumeID(Int_t index)
const UShort_t*GetModuleVolumeIDArray() const
virtual const char*TObject::GetName() const
Int_tGetNModules() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Double_tGetParError(Int_t iPar)
Double_tGetParSigRotations() const
Double_tGetParSigTranslations() const
const Char_t*GetPreAlignmentFileName()
Int_tGetPreAlignmentQualityFactor(Int_t index) const
const Int_t*GetProcessedPoints() const
AliTrackFitterRieman*GetRiemanFitter() const
const Double_t*GetSigmaLoc() const
virtual const char*TObject::GetTitle() const
Int_tGetTotBadLocEqPoints() const
virtual UInt_tTObject::GetUniqueID() const
voidGlobalFit(Double_t* parameters, Double_t* errors, Double_t* pulls)
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
voidInitGlobalParameters(Double_t* par)
Int_tInitModuleParams()
Bool_tInitRiemanFit()
voidInitTrackParams(int meth = 1)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tIsConfigured() const
Int_tIsContained(UShort_t voluid) const
Int_tIsDefined(UShort_t voluid) 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
voidLocalFit(Int_t iTrack, Double_t* lTrackParam, Int_t lSingleFit)
virtual voidTObject::ls(Option_t* option = "") 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)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
AliTrackPointArray*PrepareTrack(const AliTrackPointArray* track)
virtual voidPrint(Option_t*) const
voidPrintCurrentModuleInfo()
voidPrintGlobalParameters()
Int_tProcessTrack(AliTrackPointArray* track)
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)
voidSetBug(Int_t bug)
voidSetCurrentCluster(const AliTrackPoint& atp)
voidSetCurrentModule(Int_t index)
voidSetCurrentSensitiveModule(Int_t index)
voidSetCurrentTrack(AliTrackPointArray *const atp)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetGeometryFileName(const Char_t* filename = "geometry.root")
voidSetGlobalDerivative(Int_t index, Double_t value)
voidSetInitTrackParamsMeth(Int_t meth = 1)
voidSetLocalDerivative(Int_t index, Double_t value)
voidSetLocalEquations(const AliITSAlignMilleData* m, Int_t neq)
voidSetMinNPtsPerTrack(Int_t pts = 3)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetRequiredPoint(Char_t* where, Int_t ndet, Int_t updw, Int_t nreqpts)
voidSetTemporaryExcludedModule(Int_t index)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
AliTrackPointArray*SortTrack(const AliTrackPointArray* atp)
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 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:
AliITSAlignMille(const AliITSAlignMille& rhs)
Int_tApplyToGeometry()
voidInit(Int_t nGlobal, Int_t nLocal, Int_t nStdDev)
voidInitGeometry()
Int_tLoadConfig(const Char_t* cfile = "AliITSAlignMille.conf")
Int_tLoadSuperModuleFile(const Char_t* cfile = "ITSMilleSuperModules.root")
AliITSAlignMille&operator=(const AliITSAlignMille& rhs)
voidResetLocalEquation()

Data Members

private:
Double_tfBField/ value of magnetic field
Bool_tfBOn/ magentic field ON
Int_tfBug/ tag for temporary bug correction
AliTrackPointfCluster/< current cluster
TGeoHMatrix*fCurrentModuleHMatrix/ SuperModule matrix
Int_tfCurrentModuleIndex/ SuperModule index
Int_tfCurrentModuleInternalIndex/ SuperModule internal index
Double_tfCurrentModuleTranslation[3]/
Int_tfCurrentSensVolIndex/ Current point (sens. vol.) index
Double_tfDerivativeXLoclocalX deriv.
Double_tfDerivativeZLoclocalZ deriv.
Bool_tfFreeParam[4396][6]/
TGeoManager*fGeoManager/
TStringfGeometryFileName/
Double_t*fGlobalDerivatives/< Array of global derivatives
Int_tfInitTrackParamsMeth/
Bool_tfIsConfigured/
Bool_tfIsMilleInit/
Double_tfLocalDerivatives[5]/< Array of local deriv.
Double_tfLocalInitParam[5]/< Array with inital values for local parameters for current track
Double_tfMeasGlo[3]current point glob. coord (AliTrackPoint)
Double_tfMeasLoc[3]current point local coordinates (the original ones)
AliITSAlignMilleModule*fMilleModule[4396]/ array of super modules to be aligned
AliMillepede*fMillepede/< Detector independent alignment class
Int_tfMinNPtsPerTrack/
Int_tfModuleIndex[4396]/
Double_tfModuleInitParam[6]/< Array with inital values for current module parameters (init geometry)
UShort_tfModuleVolumeID[4396]/
Int_tfNGlobal/< Number of global parameters
Int_tfNLocal/< Number of local parameters
Int_tfNModules/ number of defined modules from config file
Int_tfNReqDet[3]/ number of points required in Detector[n]
Int_tfNReqDetDown[3]/ number of points required in Detector[n] with Y<0
Int_tfNReqDetUp[3]/ number of points required in Detector[n] with Y>0
Int_tfNReqLay[6]/ number of points required in layer[n]
Int_tfNReqLayDown[6]/ number of points required in layer[n] with Y<0
Int_tfNReqLayUp[6]/ number of points required in layer[n] with Y>0
Int_tfNStdDev/< Number of standard deviations for chi2 cut
Int_tfNSuperModules/ number of custom supermodules in SM file
Double_tfParSigRotations/< init sigma for rot. params [deg]
Double_tfParSigTranslations/< init sigma for transl. params [cm]
Double_tfPintGlo[3]/
Double_tfPintLoc[3]/
Double_tfPintLoc0[3]/
Int_tfPreAlignQF[4396]/
TStringfPreAlignmentFileName/
Int_t*fProcessedPoints/ array of statistics of used points per module
Bool_tfRequirePointsrequired points in specific layers
Double_tfResCut/< Cut on residual for other iterations
Double_tfResCutInitial/< Cut on residual for first iteration
AliTrackFitterRieman*fRieman/ riemann fitter for helices
Double_tfSensVolSigmaXfactor[4396]/
Double_tfSensVolSigmaZfactor[4396]/
Double_tfSigmaLoc[3]stdev current point
Double_tfSigmaXfactor/
Double_tfSigmaZfactor/
Double_tfStartFac/< Initial value for chi2 cut
AliITSAlignMilleModule*fSuperModule[4396]/ array of super modules defined in supermodule file
AliAlignObjParams*fTempAlignObj/
Int_tfTempExcludedModule/ single module temporary excluded from initial fit
Int_tfTotBadLocEqPoints/ total number of reject points because of bad EqLoc
AliTrackPointArray*fTrack/< pointer to current track
Bool_tfUseLocalShifts/
Bool_tfUsePreAlignment/
Bool_tfUseSortedTracks/ default is kTRUE
Bool_tfUseSuperModules/
static Int_tfgNDetElem/< Total number of detection elements
static Int_tfgNParCh/< Number of degrees of freedom per chamber

Class Charts

Inheritance Chart:
TObject
AliITSAlignMille

Function documentation

AliITSAlignMille(const Char_t* configFilename = "AliITSAlignMille.conf", Bool_t initmille = kTRUE)
 main constructor that takes input from configuration file
~AliITSAlignMille()
 Destructor
Int_t LoadConfig(const Char_t* cfile = "AliITSAlignMille.conf")
 return 0 if success
        1 if error in module index or voluid
void SetRequiredPoint(Char_t* where, Int_t ndet, Int_t updw, Int_t nreqpts)
 set minimum number of points in specific detector or layer
 where = LAYER or DETECTOR
 ndet = detector number: 1-6 for LAYER and 1-3 for DETECTOR (SPD=1, SDD=2, SSD=3)
 updw = 1 for Y>0, -1 for Y<0, 0 if not specified
 nreqpts = minimum number of points of that type
Int_t GetModuleIndex(const Char_t* symname)
 index from symname
Int_t GetModuleIndex(UShort_t voluid)
 index from volume ID
UShort_t GetModuleVolumeID(const Char_t* symname)
 volume ID from symname
 works for sensitive volumes only
UShort_t GetModuleVolumeID(Int_t index)
 volume ID from index
void InitGeometry()
 initialize geometry
void Init(Int_t nGlobal, Int_t nLocal, Int_t nStdDev)
 Initialization of AliMillepede. Fix parameters, define constraints ...
void AddConstraint(Double_t* factor, Double_t value)
 Constrain equation defined by par to value
void InitGlobalParameters(Double_t* par)
 Initialize global parameters with par array
void FixParameter(Int_t param, Double_t value)
 Parameter iPar is encourage to vary in [-value;value].
 If value == 0, parameter is fixed
void ResetLocalEquation()
 Reset the derivative vectors
Int_t ApplyToGeometry()
 apply starting realignment to ideal geometry
Int_t GetPreAlignmentQualityFactor(Int_t index) const
 works for sensitive volumes
AliTrackPointArray * PrepareTrack(const AliTrackPointArray* track)
 create a new AliTrackPointArray keeping only defined modules
 move points according to a given prealignment, if any
 sort alitrackpoints w.r.t. global Y direction, if selected
AliTrackPointArray * SortTrack(const AliTrackPointArray* atp)
 sort alitrackpoints w.r.t. global Y direction
Int_t InitModuleParams()
 initialize geometry parameters for a given detector
 for current cluster (fCluster)
 fGlobalInitParam[] is set as:
    [tx,ty,tz,psi,theta,phi]

 return 0 if success
void SetCurrentModule(Int_t index)
 set as current the SuperModule that contains the 'index' sens.vol.
void SetCurrentSensitiveModule(Int_t index)
 set as current the SuperModule that contains the 'index' sens.vol.
void Print(Option_t* ) const
 print infos
AliITSAlignMilleModule * GetMilleModule(UShort_t voluid) const
 return pointer to a define supermodule
 return NULL if error
AliITSAlignMilleModule * GetCurrentModule() const
void PrintCurrentModuleInfo()
Bool_t InitRiemanFit()
 Initialize Riemann Fitter for current track
 return kFALSE if error
void InitTrackParams(int meth = 1)
 initialize local parameters with different methods
 for current track (fTrack)
Int_t IsDefined(UShort_t voluid) const
 checks if supermodule 'voluid' is defined and return the internal index
 return -1 if error
Int_t IsContained(UShort_t voluid) const
 checks if the sensitive module 'voluid' is contained inside a supermodule and return the internal index of the last identified supermodule
 return -1 if error
Bool_t CheckVolumeID(UShort_t voluid) const
 check if a sensitive volume is contained inside one of the defined supermodules
Int_t CheckCurrentTrack()
 checks if AliTrackPoints belongs to defined modules
 return number of good poins
 return 0 if not enough points
Int_t ProcessTrack(AliTrackPointArray* track)
 Process track; Loop over hits and set local equations
 here 'track' is a AliTrackPointArray
 return 0 if success;
Int_t CalcIntersectionPoint(const Double_t* lpar, const Double_t* gpar)
 calculate intersection point of track with current module in local coordinates
 according with a given set of parameters (local(4/5) and global(6))
 and fill fPintLoc/Glo
    local are:   pgx0, pgz0, ugx, ugz   OR   riemann fitters pars
    global are:  tx,ty,tz,psi,theta,phi (Raff's delta angles in deg.)
 return 0 if success
Int_t CalcDerivatives(Int_t paridx, Bool_t islpar)
 calculate numerically (ROOT's style) the derivatives for
 local X intersection  and local Z intersection
 parlist: local  (islpar=kTRUE)  pgx0, pgz0, ugx0, ugz0  OR riemann's params
          global (islpar=kFALSE) tx, ty, tz, psi, theta, phi (Raf's angles in deg)
 return 0 if success
Int_t AddLocalEquation(AliITSAlignMilleData& m)
 Define local equation for current cluster in X and Z coor.
 and store them to memory
 return 0 if success
void SetLocalEquations(const AliITSAlignMilleData* m, Int_t neq)
 Set local equations with data stored in m
 return 0 if success
void LocalFit(Int_t iTrack, Double_t* lTrackParam, Int_t lSingleFit)
 Call local fit for this track
void GlobalFit(Double_t* parameters, Double_t* errors, Double_t* pulls)
 Call global fit; Global parameters are stored in parameters
Double_t GetParError(Int_t iPar)
 Get error of parameter iPar
void PrintGlobalParameters()
 Print global parameters
Int_t LoadSuperModuleFile(const Char_t* cfile = "ITSMilleSuperModules.root")
 load definitions of supermodules from a root file
 return 0 if success
AliITSAlignMille(const Char_t* configFilename = "AliITSAlignMille.conf", Bool_t initmille = kTRUE)
void SetGeometryFileName(const Char_t* filename = "geometry.root")
 configuration methods
{ fGeometryFileName = filename; }
const Char_t* GetGeometryFileName()
{return fGeometryFileName.Data();}
const Char_t* GetPreAlignmentFileName()
{return fPreAlignmentFileName.Data();}
Bool_t IsConfigured() const
{return fIsConfigured;}
void SetMinNPtsPerTrack(Int_t pts = 3)
 fitting methods
AliTrackFitterRieman * GetRiemanFitter() const
{return fRieman;}
const Double_t* GetLocalIntersectionPoint() const
{return fPintLoc;}
const Double_t* GetGlobalIntersectionPoint() const
{return fPintGlo;}
void SetInitTrackParamsMeth(Int_t meth = 1)
void SetTemporaryExcludedModule(Int_t index)
void SetLocalDerivative(Int_t index, Double_t value)
{fLocalDerivatives[index] = value;}
void SetGlobalDerivative(Int_t index, Double_t value)
{fGlobalDerivatives[index] = value;}
AliTrackPointArray * GetCurrentTrack() const
 fitting stuffs
{return fTrack;}
const AliTrackPoint * GetCurrentCluster() const
{return &fCluster;}
void SetCurrentTrack(AliTrackPointArray *const atp)
{fTrack=atp;}
void SetCurrentCluster(const AliTrackPoint& atp)
{fCluster=atp;}
Int_t GetNModules() const
 geometry stuffs
{return fNModules;}
Int_t GetCurrentModuleIndex() const
TGeoHMatrix * GetCurrentModuleHMatrix() const
const Double_t * GetCurrentModuleTranslation() const
Int_t GetCurrentModuleInternalIndex() const
const Int_t * GetModuleIndexArray() const
{return fModuleIndex;}
const Int_t * GetProcessedPoints() const
Int_t GetTotBadLocEqPoints() const
const UShort_t * GetModuleVolumeIDArray() const
{return fModuleVolumeID;}
const Double_t * GetMeasLoc() const
 debug stuffs
{ return fMeasLoc;}
const Double_t * GetSigmaLoc() const
{ return fSigmaLoc;}
Double_t GetBField() const
{return fBField;}
const Double_t * GetLocalInitParam() const
{return fLocalInitParam;}
Double_t GetLocalDX() const
{return fDerivativeXLoc;}
Double_t GetLocalDZ() const
{return fDerivativeZLoc;}
Double_t GetParSigTranslations() const
Double_t GetParSigRotations() const
void SetBug(Int_t bug)
{fBug=bug;}
AliITSAlignMille& operator=(const AliITSAlignMille& rhs)