13#ifndef BMNGLOBALALIGNMENT_H
14#define BMNGLOBALALIGNMENT_H 1
17#include "BmnGemStripHit.h"
21#include "BmnSiliconHit.h"
22#include "FairEventHeader.h"
23#include "FairRootManager.h"
26#include <BmnFieldMap.h>
27#include <BmnGemStripStationSet.h>
28#include <BmnGlobalTrack.h>
29#include <BmnNewFieldMap.h>
30#include <BmnSiliconStationSet.h>
40#include <UniDetectorParameter.h>
57 TString misAlignFile =
"misAlignment.root",
61 virtual InitStatus
Init();
126 cout <<
"GEM" << endl;
127 const Int_t nModulMax = 2;
130 gems[iStat] =
new Bool_t[nModulMax];
142 for (
Int_t iMod = 0; iMod <
fDetectorGEM->GetGemStation(iStat)->GetNModules(); iMod++)
143 if (gems[iStat][iMod])
148 for (
Int_t iMod = 0; iMod <
fDetectorGEM->GetGemStation(iStat)->GetNModules(); iMod++)
149 cout <<
"Stat = " << iStat <<
" Mod = " << iMod <<
" isFixed (true / false) "
162 cout <<
"SI" << endl;
163 const Int_t nModulMax = 8;
166 si[iStat] =
new Bool_t[nModulMax];
177 for (
Int_t iMod = 0; iMod <
fDetectorSI->GetSiliconStation(iStat)->GetNModules(); iMod++)
183 for (
Int_t iMod = 0; iMod <
fDetectorSI->GetSiliconStation(iStat)->GetNModules(); iMod++)
184 cout <<
"Stat = " << iStat <<
" Mod = " << iMod <<
" isFixed (true / false) "
203 cout <<
"SI" << endl;
204 const Int_t nModulMax = 8;
207 si[iStat] =
new Bool_t[nModulMax];
230 for (
Int_t iMod = 0; iMod <
fDetectorSI->GetSiliconStation(iStat)->GetNModules(); iMod++)
250 SetSiFixedRun7(st0_0, st0_1, st0_2, st0_3, st1_0, st1_1, st2_0, st2_1, st2_2, st2_3, st2_4, st2_5, st2_6,
272 cout <<
"GEM" << endl;
273 const Int_t nModulMax = 2;
276 gem[iStat] =
new Bool_t[nModulMax];
315 for (
Int_t iMod = 0; iMod <
fDetectorGEM->GetGemStation(iStat)->GetNModules(); iMod++)
316 if (gem[iStat][iMod])
361 while (label % 3 != 0)
366 if (it.second != label)
368 out.push_back(it.first.first);
369 out.push_back(it.first.second);
377 while (label % 3 != 0)
382 if (it.second != label)
384 out.push_back(it.first.first);
385 out.push_back(it.first.second);
396 Int_t srcGEM[10][2] = {{3, -1}, {6, -1}, {9, -1}, {12, -1}, {15, 18},
397 {21, 24}, {27, 30}, {33, 36}, {39, 42}, {45, 48}};
399 Int_t bmnGEM[6][2] = {{3, 6}, {9, 12}, {15, 18}, {21, 24}, {27, 30}, {33, 36}};
401 const Int_t nGemStats = isSRC ? 10 : 6;
402 const Int_t nGemMods = 2;
405 for (
Int_t iStat = 0; iStat < nGemStats; iStat++) {
406 gem[iStat] =
new Int_t[nGemMods];
407 for (
Int_t iMod = 0; iMod < nGemMods; iMod++)
408 gem[iStat][iMod] = isSRC ? srcGEM[iStat][iMod] : bmnGEM[iStat][iMod];
412 for (
Int_t iMod = 0; iMod <
fDetectorGEM->GetGemStation(iStat)->GetNModules(); iMod++)
415 const Int_t nSilStats = 3;
416 const Int_t nSilMods = 8;
418 Int_t bmnSIL[nSilStats][nSilMods] = {
419 {39, 42, 45, 48, -1, -1, -1, -1}, {51, 54, -1, -1, -1, -1, -1, -1}, {57, 60, 63, 66, 69, 72, 75, 78}};
421 Int_t srcSIL[nSilStats][nSilMods] = {
422 {51, 54, 57, 60, -1, -1, -1, -1}, {63, 66, -1, -1, -1, -1, -1, -1}, {69, 72, 75, 78, 81, 84, 87, 90}};
425 for (
Int_t iStat = 0; iStat < nSilStats; iStat++) {
426 sil[iStat] =
new Int_t[nSilMods];
427 for (
Int_t iMod = 0; iMod < nSilMods; iMod++)
428 sil[iStat][iMod] = isSRC ? srcSIL[iStat][iMod] : bmnSIL[iStat][iMod];
432 for (
Int_t iMod = 0; iMod <
fDetectorSI->GetSiliconStation(iStat)->GetNModules(); iMod++)
438 cout <<
"GEM" << endl;
441 cout << it.first.first <<
", " << it.first.second <<
" --> " << it.second << endl;
443 cout <<
"SILICON" << endl;
445 cout << it.first.first <<
", " << it.first.second <<
" --> " << it.second << endl;
453 map<Int_t, pair<vector<BmnMilleContainer*>, vector<BmnMilleContainer*>>>
fCONTAINER;
454 map<Int_t, pair<vector<BmnMilleContainer*>, vector<BmnMilleContainer*>>>::iterator
fITERATOR;
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
#define ClassDef(name, id)
void SetDwfractionCut(Double_t fraction)
void SetUseConstraints(Bool_t flag)
virtual ~BmnGlobalAlignment()
void ExtractCorrValues(ifstream &, Double_t *)
Bool_t ** fixedSiElements
void SetExclusionRangeTy(Double_t min, Double_t max)
virtual InitStatus Init()
TClonesArray * fSiAlignCorr
TString fBranchSiAlignCorr
TString fBranchFairEventHeader
Double_t fMinHitsAccepted
TClonesArray * fGemAlignCorr
void SetOutlierDownweighting(Int_t n)
void SetGemConfigSRC(Bool_t st0_0, Bool_t st1_0, Bool_t st2_0, Bool_t st3_0, Bool_t st4_0, Bool_t st4_1, Bool_t st5_0, Bool_t st5_1, Bool_t st6_0, Bool_t st6_1, Bool_t st7_0, Bool_t st7_1, Bool_t st8_0, Bool_t st8_1, Bool_t st9_0, Bool_t st9_1)
TClonesArray * fGemTracks
void SetDebug(Bool_t flag)
vector< Int_t > fFixedStats
void SetChi2MaxPerNDF(Double_t val)
Bool_t fUseRegularization
static Int_t fCurrentEvent
void SetSiFixedRun7(Bool_t st0_0, Bool_t st0_1, Bool_t st0_2, Bool_t st0_3, Bool_t st1_0, Bool_t st1_1, Bool_t st2_0, Bool_t st2_1, Bool_t st2_2, Bool_t st2_3, Bool_t st2_4, Bool_t st2_5, Bool_t st2_6, Bool_t st2_7)
Int_t SiliconStatModLabel(Int_t st, Int_t mod)
void MilleNoFieldRuns(BmnGlobalTrack *, Int_t, Int_t, vector< BmnMilleContainer * > &, vector< BmnMilleContainer * > &)
virtual void Exec(Option_t *opt)
map< pair< Int_t, Int_t >, Int_t > gemStatModLabel
TClonesArray * fGlobalTracks
map< Int_t, pair< vector< BmnMilleContainer * >, vector< BmnMilleContainer * > > >::iterator fITERATOR
void SetGemFixedRun6(Bool_t st0_0, Bool_t st1_0, Bool_t st2_0, Bool_t st3_0, Bool_t st3_1, Bool_t st4_0, Bool_t st4_1, Bool_t st5_0, Bool_t st5_1)
void SetSiConfigSRC(Bool_t st0_0, Bool_t st0_1, Bool_t st0_2, Bool_t st0_3, Bool_t st1_0, Bool_t st1_1, Bool_t st2_0, Bool_t st2_1, Bool_t st2_2, Bool_t st2_3, Bool_t st2_4, Bool_t st2_5, Bool_t st2_6, Bool_t st2_7)
Int_t fOutlierdownweighting
void SetExclusionRangeTx(Double_t min, Double_t max)
TString fBranchGemAlignCorr
vector< Int_t > GetSiliconStatMod(Int_t label)
void SetEntriesPerParam(Int_t entries)
BmnSiliconStationSet * fDetectorSI
Bool_t ** fixedGemElements
void _Mille(Double_t *, Double_t *, BmnMille *, Int_t)
BmnGemStripStationSet * fDetectorGEM
void SetUseRegularization(Bool_t flag)
void SetTxMinMax(Double_t min, Double_t max)
map< Int_t, pair< vector< BmnMilleContainer * >, vector< BmnMilleContainer * > > > fCONTAINER
void SetTyMinMax(Double_t min, Double_t max)
void CreateDetectorGeometries()
void SetDoTest(Bool_t flag)
void SetChisqcut(Double_t val1, Double_t val2)
void ReadPedeOutput(ifstream &)
FairEventHeader * fFairEventHeader
TClonesArray * fSilTracks
void SetDetectors(Bool_t gem, Bool_t si)
void SetSiFixedRun6(Bool_t st0_0, Bool_t st0_1, Bool_t st0_2, Bool_t st0_3, Bool_t st0_4, Bool_t st0_5, Bool_t st0_6, Bool_t st0_7)
void SetAccuracy(Double_t accuracy)
map< pair< Int_t, Int_t >, Int_t > silStatModLabel
const Int_t MakeBinFile()
void SetUseRealHitErrors(Bool_t flag)
BmnMilleContainer * FillMilleContainer(BmnGlobalTrack *, BmnHit *)
TString fBranchGlobalTracks
TClonesArray * fBmnGemMisalign
Int_t GemStatModLabel(Int_t st, Int_t mod)
void SetPreSigma(Double_t presigma)
TString fBranchGemResiduals
void SetHugecut(Double_t val)
void SetMinHitsAccepted(Int_t val)
vector< Int_t > GetGemStatMod(Int_t label)
*brief user defined string literal for JSON values *sa std::size_t n