BmnRoot 26.10.0-19-g6979a6c6
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
readCorrections.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>
8R__ADD_INCLUDE_PATH($VMCWORKDIR)
9#include "macro/run/bmnloadlibs.C"
10R__LOAD_LIBRARY(libBmnAlignment.so)
11
13
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 BmnGemStripStationSet* GEM = new BmnGemStripStationSet(gPathGemConfig + "/parameters/gem/XMLConfigs/" + gemConf);
24 BmnSiliconStationSet* SI = new BmnSiliconStationSet(gPathGemConfig + "/parameters/silicon/XMLConfigs/" + siConf);
25
26 const Int_t nStatGEM = GEM->GetNStations();
27 const Int_t nStatSI = SI->GetNStations();
28
29 FILE* file = fopen("obtainedCorrections.dat", "w");
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 ReadFileCorrections(file, GEM, in, corrGEM);
45 fclose(file);
46}
47
48void ReadFileCorrections(FILE* file, BmnGemStripStationSet* GEM, TString fname, Double_t*** corrGEM)
49{
50 if (fname == "")
51 return;
52
53 TChain* chGEM = new TChain("cbmsim");
54 chGEM->Add(fname.Data());
55
56 TClonesArray* corrsGEM = NULL;
57 chGEM->SetBranchAddress("BmnGemAlignCorrections", &corrsGEM);
58
59 for (Int_t iEntry = 0; iEntry < chGEM->GetEntries(); iEntry++) {
60 chGEM->GetEntry(iEntry);
61
62 for (Int_t iCorr = 0; iCorr < corrsGEM->GetEntriesFast(); iCorr++) {
63 BmnGemAlignCorrections* alignGEM = (BmnGemAlignCorrections*)corrsGEM->UncheckedAt(iCorr);
64 corrGEM[alignGEM->GetStation()][alignGEM->GetModule()][0] = alignGEM->GetCorrections().X();
65 corrGEM[alignGEM->GetStation()][alignGEM->GetModule()][1] = alignGEM->GetCorrections().Y();
66 corrGEM[alignGEM->GetStation()][alignGEM->GetModule()][2] = alignGEM->GetCorrections().Z();
67 }
68 }
69
70 for (Int_t iStat = 0; iStat < GEM->GetNStations(); iStat++)
71 for (Int_t iMod = 0; iMod < GEM->GetGemStation(iStat)->GetNModules(); iMod++)
72 for (Int_t iPar = 0; iPar < 3; iPar++)
73 fprintf(file, "Stat %d Mod %d Par %d %G\n", iStat, iMod, iPar, corrGEM[iStat][iMod][iPar]);
74
75 cout << endl;
76 delete chGEM;
77}
int Int_t
double Double_t
#define R__LOAD_LIBRARY(LIBRARY)
#define R__ADD_INCLUDE_PATH(PATH)
R__EXTERN TSystem * gSystem
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=nullptr)
virtual Int_t Add(const char *name, Long64_t nentries=TTree::kMaxEntries)
Long64_t GetEntries() const override
Int_t GetEntry(Long64_t entry=0, Int_t getall=0) override
Int_t GetEntriesFast() const
TObject * UncheckedAt(Int_t i) const
const char * Data() const
Double_t Z() const
Double_t Y() const
Double_t X() const
void readCorrections(TString in="")
void ReadFileCorrections(FILE *, BmnGemStripStationSet *, TString, Double_t ***)