BmnRoot
26.10.0-19-g6979a6c6
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
corrSummator.C
Go to the documentation of this file.
1
#include <
Rtypes.h
>
2
#include <
TChain.h
>
3
#include <
TClonesArray.h
>
4
#include <
TFile.h
>
5
#include <
TString.h
>
6
#include <
TTree.h
>
7
#include <
TVector3.h
>
8
R__ADD_INCLUDE_PATH
($VMCWORKDIR)
9
#include "macro/run/bmnloadlibs.C"
10
R__LOAD_LIBRARY
(libBmnAlignment.so)
11
12
void
ReadFileCorrections
(
TString
,
Double_t
***,
Double_t
***);
13
14
void
corrSummator
(
TString
in1 =
"it0.root"
,
TString
in2 =
"align.root"
,
TString
out =
"it1.root"
)
15
{
16
bmnloadlibs();
// load BmnRoot libraries
17
18
TString
gPathGemConfig =
gSystem
->Getenv(
"VMCWORKDIR"
);
19
20
TString
siConf =
"SiliconRunSpring2018.xml"
;
21
TString
gemConf =
"GemRunSpring2018.xml"
;
22
23
TString
fnames[2] = {in1, in2};
24
25
BmnGemStripStationSet
*
GEM
=
new
BmnGemStripStationSet
(gPathGemConfig +
"/parameters/gem/XMLConfigs/"
+ gemConf);
26
BmnSiliconStationSet
* SI =
new
BmnSiliconStationSet
(gPathGemConfig +
"/parameters/silicon/XMLConfigs/"
+ siConf);
27
28
const
Int_t
nStatGEM =
GEM
->GetNStations();
29
const
Int_t
nStatSI = SI->
GetNStations
();
30
31
const
Int_t
nParams = 3;
32
33
Double_t
*** corrGEM =
new
Double_t
**[nStatGEM];
34
for
(
Int_t
iStat = 0; iStat < nStatGEM; iStat++) {
35
Int_t
nModul =
GEM
->GetGemStation(iStat)->GetNModules();
36
corrGEM[iStat] =
new
Double_t
*[nModul];
37
for
(
Int_t
iMod = 0; iMod < nModul; iMod++) {
38
corrGEM[iStat][iMod] =
new
Double_t
[nParams];
39
for
(
Int_t
iPar = 0; iPar < nParams; iPar++) {
40
corrGEM[iStat][iMod][iPar] = 0.;
41
}
42
}
43
}
44
45
Double_t
*** corrSI =
new
Double_t
**[nStatSI];
46
for
(
Int_t
iStat = 0; iStat < nStatSI; iStat++) {
47
Int_t
nModul = SI->
GetSiliconStation
(iStat)->
GetNModules
();
48
corrSI[iStat] =
new
Double_t
*[nModul];
49
for
(
Int_t
iMod = 0; iMod < nModul; iMod++) {
50
corrSI[iStat][iMod] =
new
Double_t
[nParams];
51
for
(
Int_t
iPar = 0; iPar < nParams; iPar++) {
52
corrSI[iStat][iMod][iPar] = 0.;
53
}
54
}
55
}
56
57
for
(
Int_t
iFile = 0; iFile < 2; iFile++)
58
ReadFileCorrections
(fnames[iFile], corrGEM, corrSI);
59
60
// Prepare output tree
61
TFile
* outFile =
new
TFile
(out,
"recreate"
);
62
TTree
* outTree =
new
TTree
(
"cbmsim"
,
"cbmsim"
);
63
TClonesArray
* outClassGEM =
new
TClonesArray
(
"BmnGemAlignCorrections"
);
64
TClonesArray
* outClassSI =
new
TClonesArray
(
"BmnSiliconAlignCorrections"
);
65
outTree->
Branch
(
"BmnGemAlignCorrections"
, &outClassGEM);
66
outTree->
Branch
(
"BmnSiliconAlignCorrections"
, &outClassSI);
67
68
for
(
Int_t
iStat = 0; iStat < nStatGEM; iStat++) {
69
Int_t
nModul =
GEM
->GetGemStation(iStat)->GetNModules();
70
for
(
Int_t
iMod = 0; iMod < nModul; iMod++) {
71
new
((*outClassGEM)[outClassGEM->
GetEntriesFast
()])
BmnGemAlignCorrections
(
72
iStat, iMod,
TVector3
(corrGEM[iStat][iMod][0], corrGEM[iStat][iMod][1], corrGEM[iStat][iMod][2]));
73
cout << iStat <<
" "
<< iMod <<
" "
<< corrGEM[iStat][iMod][0] <<
" "
<< corrGEM[iStat][iMod][1] <<
" "
74
<< corrGEM[iStat][iMod][2] << endl;
75
}
76
}
77
78
cout << endl;
79
80
for
(
Int_t
iStat = 0; iStat < nStatSI; iStat++) {
81
Int_t
nModul = SI->
GetSiliconStation
(iStat)->
GetNModules
();
82
for
(
Int_t
iMod = 0; iMod < nModul; iMod++) {
83
new
((*outClassSI)[outClassSI->
GetEntriesFast
()])
BmnSiliconAlignCorrections
(
84
iStat, iMod,
TVector3
(corrSI[iStat][iMod][0], corrSI[iStat][iMod][1], corrSI[iStat][iMod][2]));
85
cout << iStat <<
" "
<< iMod <<
" "
<< corrSI[iStat][iMod][0] <<
" "
<< corrSI[iStat][iMod][1] <<
" "
86
<< corrSI[iStat][iMod][2] << endl;
87
}
88
}
89
90
outTree->
Fill
();
91
outTree->
Write
();
92
outFile->
Close
();
93
}
94
95
void
ReadFileCorrections
(
TString
fname,
Double_t
*** corrGEM,
Double_t
*** corrSI)
96
{
97
if
(fname ==
""
)
98
return
;
99
100
TChain
* chGEM =
new
TChain
(
"cbmsim"
);
101
chGEM->
Add
(fname.
Data
());
102
103
TClonesArray
* corrsGEM = NULL;
104
chGEM->
SetBranchAddress
(
"BmnGemAlignCorrections"
, &corrsGEM);
105
106
for
(
Int_t
iEntry = 0; iEntry < chGEM->
GetEntries
(); iEntry++) {
107
chGEM->
GetEntry
(iEntry);
108
109
for
(
Int_t
iCorr = 0; iCorr < corrsGEM->
GetEntriesFast
(); iCorr++) {
110
BmnGemAlignCorrections
* alignGEM = (
BmnGemAlignCorrections
*)corrsGEM->
UncheckedAt
(iCorr);
111
corrGEM[alignGEM->
GetStation
()][alignGEM->
GetModule
()][0] += alignGEM->
GetCorrections
().
X
();
112
corrGEM[alignGEM->
GetStation
()][alignGEM->
GetModule
()][1] += alignGEM->
GetCorrections
().
Y
();
113
corrGEM[alignGEM->
GetStation
()][alignGEM->
GetModule
()][2] += alignGEM->
GetCorrections
().
Z
();
114
}
115
}
116
cout << endl;
117
delete
chGEM;
118
119
TChain
* chSI =
new
TChain
(
"cbmsim"
);
120
chSI->
Add
(fname.
Data
());
121
122
TClonesArray
* corrsSI = NULL;
123
chSI->
SetBranchAddress
(
"BmnSiliconAlignCorrections"
, &corrsSI);
124
125
for
(
Int_t
iEntry = 0; iEntry < chSI->
GetEntries
(); iEntry++) {
126
chSI->
GetEntry
(iEntry);
127
128
for
(
Int_t
iCorr = 0; iCorr < corrsSI->
GetEntriesFast
(); iCorr++) {
129
BmnSiliconAlignCorrections
* alignSI = (
BmnSiliconAlignCorrections
*)corrsSI->
UncheckedAt
(iCorr);
130
corrSI[alignSI->
GetStation
()][alignSI->
GetModule
()][0] += alignSI->
GetCorrections
().
X
();
131
corrSI[alignSI->
GetStation
()][alignSI->
GetModule
()][1] += alignSI->
GetCorrections
().
Y
();
132
corrSI[alignSI->
GetStation
()][alignSI->
GetModule
()][2] += alignSI->
GetCorrections
().
Z
();
133
}
134
}
135
cout << endl;
136
delete
chSI;
137
}
GEM
@ GEM
Definition
BmnLambdaEmbeddingQa.h:48
Int_t
int Int_t
Double_t
double Double_t
Rtypes.h
R__LOAD_LIBRARY
#define R__LOAD_LIBRARY(LIBRARY)
R__ADD_INCLUDE_PATH
#define R__ADD_INCLUDE_PATH(PATH)
TChain.h
TClonesArray.h
TFile.h
TString.h
gSystem
R__EXTERN TSystem * gSystem
TTree.h
TVector3.h
BmnAlignCorrections::GetCorrections
TVector3 GetCorrections()
Definition
BmnAlignCorrections.h:39
BmnGemAlignCorrections
Definition
BmnGemAlignCorrections.h:13
BmnGemAlignCorrections::GetStation
Int_t GetStation()
Definition
BmnGemAlignCorrections.h:25
BmnGemAlignCorrections::GetModule
Int_t GetModule()
Definition
BmnGemAlignCorrections.h:27
BmnGemStripStationSet
Definition
BmnGemStripStationSet.h:15
BmnSiliconAlignCorrections
Definition
BmnSiliconAlignCorrections.h:13
BmnSiliconAlignCorrections::GetModule
Int_t GetModule()
Definition
BmnSiliconAlignCorrections.h:28
BmnSiliconAlignCorrections::GetStation
Int_t GetStation()
Definition
BmnSiliconAlignCorrections.h:26
BmnSiliconStationSet
Definition
BmnSiliconStationSet.h:14
BmnSiliconStationSet::GetNStations
Int_t GetNStations()
Definition
BmnSiliconStationSet.h:35
BmnSiliconStationSet::GetSiliconStation
BmnSiliconStation * GetSiliconStation(Int_t station_num)
Definition
BmnSiliconStationSet.cxx:89
BmnSiliconStation::GetNModules
Int_t GetNModules()
Definition
BmnSiliconStation.h:55
TChain
TChain::SetBranchAddress
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=nullptr)
TChain::Add
virtual Int_t Add(const char *name, Long64_t nentries=TTree::kMaxEntries)
TChain::GetEntries
Long64_t GetEntries() const override
TChain::GetEntry
Int_t GetEntry(Long64_t entry=0, Int_t getall=0) override
TClonesArray
TFile
TFile::Close
void Close(Option_t *option="") override
TObjArray::GetEntriesFast
Int_t GetEntriesFast() const
TObjArray::UncheckedAt
TObject * UncheckedAt(Int_t i) const
TString
TString::Data
const char * Data() const
TTree
TTree::Fill
virtual Int_t Fill()
TTree::Write
Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const override
TTree::Branch
virtual Int_t Branch(const char *folder, Int_t bufsize=32000, Int_t splitlevel=99)
TVector3
TVector3::Z
Double_t Z() const
TVector3::Y
Double_t Y() const
TVector3::X
Double_t X() const
ReadFileCorrections
void ReadFileCorrections(TString, Double_t ***, Double_t ***)
Definition
corrSummator.C:95
corrSummator
void corrSummator(TString in1="it0.root", TString in2="align.root", TString out="it1.root")
Definition
corrSummator.C:14
macro
alignment
instruments
corrSummator.C
Generated on
for BmnRoot by
1.17.0