16#include "UniDetectorParameter.h"
20 fBranchGemCorrs =
"BmnGemAlignCorrections";
21 fBranchSilCorrs =
"BmnSiliconAlignCorrections";
25 if (fileName.Contains(
"default")) {
26 fFilename = Form(
"alignment_innTracker_%d.root", UInt_t(gRandom->Integer(UINT32_MAX)));
32 Bool_t isSRC = (
run < 3589) ? kTRUE : kFALSE;
33 TString gPathConfig = gSystem->Getenv(
"VMCWORKDIR");
34 TString confSi =
"SiliconRun" + TString(isSRC ?
"SRC" :
"") +
"Spring2018.xml";
35 TString confGem =
"GemRun" + TString(isSRC ?
"SRC" :
"") +
"Spring2018.xml";
38 TString gPathSiliconConfig = gPathConfig +
"/parameters/silicon/XMLConfigs/";
42 TString gPathGemConfig = gPathConfig +
"/parameters/gem/XMLConfigs/";
47 for (Int_t iOpen = 0; iOpen < 2; iOpen++) {
48 f =
new TFile(fFilename.Data());
55 remove(fFilename.Data());
60 fLorCorrs =
new Double_t*[nStat];
63 vector<UniValue*> shifts;
66 for (Int_t iEle = 0; iEle < nStat; iEle++) {
67 const Int_t nParams = 3;
68 fLorCorrs[iEle] =
new Double_t[nParams];
69 for (Int_t iParam = 0; iParam < nParams; iParam++)
70 fLorCorrs[iEle][iParam] = (coeffLorCorrs) ? ((
LorentzShiftValue*)shifts[iEle])->ls[iParam] : 0.;
73 for (
auto shift : shifts)
80 cout <<
"GEM corrections: " << endl;
81 for (Int_t iStat = 0; iStat < fDetectorGEM->
GetNStations(); iStat++)
82 for (Int_t iMod = 0; iMod < fDetectorGEM->
GetGemStation(iStat)->GetNModules(); iMod++) {
83 cout <<
"Stat# " << iStat <<
" Mod# " << iMod <<
" Corrs# ";
84 for (Int_t iCorr = 0; iCorr < 3; iCorr++)
85 cout << fCorrsGem[iStat][iMod][iCorr] <<
" ";
89 cout <<
"Lorentz coefficients: " << endl;
90 for (Int_t iStat = 0; iStat < fDetectorGEM->
GetNStations(); iStat++)
91 for (Int_t iCoeff = 0; iCoeff < 3; iCoeff++)
92 cout << fLorCorrs[iStat][iCoeff] <<
" ";
95 cout <<
"SILICON corrections: " << endl;
96 for (Int_t iStat = 0; iStat < fDetectorSI->
GetNStations(); iStat++)
97 for (Int_t iMod = 0; iMod < fDetectorSI->
GetSiliconStation(iStat)->GetNModules(); iMod++) {
98 cout <<
"Stat# " << iStat <<
" Mod# " << iMod <<
" Corrs# ";
99 for (Int_t iCorr = 0; iCorr < 3; iCorr++)
100 cout << fCorrsSil[iStat][iMod][iCorr] <<
" ";
108 for (Int_t iStat = 0; iStat < fDetectorGEM->
GetNStations(); iStat++) {
109 for (Int_t iMod = 0; iMod < fDetectorGEM->
GetGemStation(iStat)->GetNModules(); iMod++) {
110 delete[] fCorrsGem[iStat][iMod];
112 delete[] fCorrsGem[iStat];
113 delete[] fLorCorrs[iStat];
118 for (Int_t iStat = 0; iStat < fDetectorSI->
GetNStations(); iStat++) {
119 for (Int_t iMod = 0; iMod < fDetectorSI->
GetSiliconStation(iStat)->GetNModules(); iMod++) {
120 delete[] fCorrsSil[iStat][iMod];
122 delete[] fCorrsSil[iStat];
133 const Int_t nParams = 3;
134 Double_t*** corr =
new Double_t**[nStat];
136 for (Int_t iStat = 0; iStat < nStat; iStat++) {
138 corr[iStat] =
new Double_t*[nModul];
140 for (Int_t iMod = 0; iMod < nModul; iMod++) {
141 corr[iStat][iMod] =
new Double_t[nParams];
143 for (Int_t iPar = 0; iPar < nParams; iPar++)
144 corr[iStat][iMod][iPar] = 0.;
148 TTree* t = (TTree*)
file->Get(
"cbmsim");
149 TClonesArray* corrs =
nullptr;
150 t->SetBranchAddress(fBranchGemCorrs.Data(), &corrs);
152 for (Int_t iEntry = 0; iEntry < t->GetEntries(); iEntry++) {
154 for (Int_t iCorr = 0; iCorr < corrs->GetEntriesFast(); iCorr++) {
171 const Int_t nParams = 3;
172 Double_t*** corr =
new Double_t**[nStat];
174 for (Int_t iStat = 0; iStat < nStat; iStat++) {
176 corr[iStat] =
new Double_t*[nModul];
178 for (Int_t iMod = 0; iMod < nModul; iMod++) {
179 corr[iStat][iMod] =
new Double_t[nParams];
181 for (Int_t iPar = 0; iPar < nParams; iPar++)
182 corr[iStat][iMod][iPar] = 0.;
186 TTree* t = (TTree*)
file->Get(
"cbmsim");
187 TClonesArray* corrs =
nullptr;
188 t->SetBranchAddress(fBranchSilCorrs.Data(), &corrs);
190 for (Int_t iEntry = 0; iEntry < t->GetEntries(); iEntry++) {
192 for (Int_t iCorr = 0; iCorr < corrs->GetEntriesFast(); iCorr++) {
TVector3 GetCorrections()
BmnGemStripStation * GetGemStation(Int_t station_num)
Double_t *** GetGemCorrs()
virtual ~BmnInnTrackerAlign()
Double_t *** GetSiliconCorrs()
BmnSiliconStation * GetSiliconStation(Int_t station_num)
int GetValue(vector< UniValue * > ¶meter_value)
get value of detector parameter presented by an array
static UniDetectorParameter * GetDetectorParameter(int value_id)
get detector parameter from the database
static int ReadFile(const char *detector_name, const char *parameter_name, int period_number, int run_number, const char *file_path)