30 mNEntriesAutoSave(10000),
31 mRecordReader(new
o2::fwdalign::MilleRecordReader()),
32 mWithConstraintsRecReader(false),
33 mConstraintsRecReader(nullptr),
34 mMillepede(new
o2::fwdalign::MillePede2())
42 double default_value = 0;
47 LOGF(
debug,
"RecordsToAlignParams instantiated");
62 LOGF(
debug,
"RecordsToAlignParams destroyed");
84 LOG(info) <<
"-------------- RecordsToAlignParams configured with -----------------";
87 LOGF(info,
"ResidualCut = %.3f",
mResCut);
88 LOGF(info,
"mStartFac = %.3f",
mStartFac);
90 "Allowed variation: dx = %.3f, dy = %.3f, dz = %.3f, dRz = %.4f",
92 LOG(info) <<
"-----------------------------------------------------------";
106 LOGF(info,
"RecordsToAlignParams init done");
114 LOGF(fatal,
"RecordsToAlignParams::globalFit() aborted because init was not done !");
118 LOGF(fatal,
"RecordsToAlignParams::globalFit() aborted because no data record can be read !");
139 LOGF(info,
"RecordsToAlignParams::globalFit() - done, results below");
140 LOGF(info,
"sensor info, dx (cm), dy (cm), dz (cm), dRz (rad)");
143 double dRx = 0., dRy = 0., dRz = 0.;
144 double dx = 0., dy = 0., dz = 0.;
146 bool withSymName =
false;
156 "%s, %.3e, %.3e, %.3e, %.3e",
157 name.str().c_str(), dx, dy, dz, dRz);
Helper class to access to the global coordinates of the center each MFT sensor.
ClassImp(o2::mft::RecordsToAlignParams)
Class using records to run MillePede global fit and extract align params.
bool InitChi2Storage(const int nEntriesAutoSave=10000)
initialize the file and tree to store chi2 from LocalFit()
int InitMille(int nGlo, const int nLoc, const int lNStdDev=-1, const double lResCut=-1., const double lResCutInit=-1., const std::vector< int > ®roup={})
init all
void SetParSigma(int i, double par)
void SetConstraintsRecReader(o2::fwdalign::MilleRecordReader *myP)
void EndChi2Storage()
write tree and close file where are stored chi2 from LocalFit()
int SetIterations(const double lChi2CutFac)
Number of iterations is calculated from lChi2CutFac.
int GlobalFit(std::vector< double > &par, std::vector< double > &error, std::vector< double > &pull)
performs a requested number of global iterations
void SetRecordReader(o2::fwdalign::MilleRecordReader *myP)
void changeDataBranchName(const bool isConstraintsRec=true)
choose data records filename
Long64_t getNEntries() const
return the number of entries
void connectToChain(TChain *ch)
connect to input TChain
bool isReaderOk() const
check if connect to input TChain went well
TString geoSymbolicName()
return the geo symbolic name for this sensor
void setSensorOnlyInfo(const int chipIndex)
set the studied sensor
Int_t sensorUid() const
return the ALICE global unique id of the sensor
std::stringstream getSensorFullName(bool wSymName=true)
return a stringstream filled with the sensor info
double mResCutInitial
Cut on residual on first iteration.
static constexpr int mNumberOfSensors
Total number of sensors (detection elements) in the MFT.
static constexpr int mNDofPerSensor
translation in global x, y, z, and rotation Rz around global z-axis
double mResCut
Cut on residual for other iterations.
bool mIsInitDone
boolean to follow the initialisation status
double mStartFac
Initial value for chi2 cut, used to reject outliers i.e. bad tracks with sum(chi2) > Chi2DoFLim(fNStd...
static constexpr int mNumberOfGlobalParam
Number of alignment (= global) parameters.
std::array< double, mNDofPerSensor > mAllowVar
"Encouraged" variation for degrees of freedom {dx, dy, dRz, dz}
static constexpr int mNumberOfTrackParam
Number of track (= local) parameters (X0, Tx, Y0, Ty)
int mChi2CutNStdDev
Number of standard deviations for chi2 cut.
void connectConstraintsRecReaderToChain(TChain *ch)
conect constraints record reader to input TChain of constraints record
o2::fwdalign::MilleRecordReader * mRecordReader
utility that handles the reading of the data records used to feed MillePede solver
~RecordsToAlignParams() override
destructor
void connectRecordReaderToChain(TChain *ch)
connect data record reader to input TChain of records
void globalFit()
perform the simultaneous fit of track (local) and alignement (global) parameters
long mNEntriesAutoSave
number of entries needed to cyclically call AutoSave for the output control tree
o2::fwdalign::MilleRecordReader * mConstraintsRecReader
utility that handles the reading of the constraints records
std::vector< double > mPedeOutParamsErrors
Vector to store the outputs (errors on the alignement corrections) of the MillePede simulatenous fit.
RecordsToAlignParams()
construtor
void init() override
init MilliPede
bool mWithControl
boolean to set the use of the control tree = chi2 per track filled by MillePede LocalFit()
std::vector< double > mPedeOutParams
Vector to store the outputs (alignment corrections) of the MillePede simulatenous fit.
bool mWithConstraintsRecReader
boolean to set to true if one wants to also read constraints records
o2::fwdalign::MillePede2 * mMillepede
Millepede2 implementation copied from AliROOT.
std::vector< o2::detectors::AlignParam > mAlignParams
vector of alignment parameters computed by MillePede simultaneous fit
std::vector< double > mPedeOutParamsPulls
Vector to store the outputs (pulls on the alignement corrections) of the MillePede simulatenous fit.
GLuint const GLchar * name
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"