39 xmlConfFileNameGEM =
"GemRunSpring2018.xml";
40 xmlConfFileNameSil =
"SiliconRunSpring2018.xml";
41 xmlConfFileNameCSC =
"CSCRunSpring2018.xml";
43 xmlConfFileNameGEM =
"GemRunSRCSpring2018.xml";
44 xmlConfFileNameSil =
"SiliconRunSRCSpring2018.xml";
45 xmlConfFileNameCSC =
"CSCRunSRCSpring2018.xml";
49 xmlConfFileNameGEM =
"GemRunSpring2017.xml";
50 xmlConfFileNameSil =
"SiliconRunSpring2017.xml";
53 printf(
"Error! Unknown config!\n");
58 if (xmlConfFileNameGEM.
Length() > 0) {
59 xmlConfFileNameGEM =
TString(getenv(
"VMCWORKDIR")) +
"/parameters/gem/XMLConfigs/" + xmlConfFileNameGEM;
60 printf(
"xmlConfFileName %s\n", xmlConfFileNameGEM.
Data());
65 if (xmlConfFileNameSil.
Length() > 0) {
66 xmlConfFileNameSil =
TString(getenv(
"VMCWORKDIR")) +
"/parameters/silicon/XMLConfigs/" + xmlConfFileNameSil;
67 printf(
"xmlConfFileName %s\n", xmlConfFileNameSil.
Data());
72 if (xmlConfFileNameCSC.
Length() > 0) {
73 xmlConfFileNameCSC =
TString(getenv(
"VMCWORKDIR")) +
"/parameters/csc/XMLConfigs/" + xmlConfFileNameCSC;
74 printf(
"xmlConfFileName %s\n", xmlConfFileNameCSC.
Data());
85 TF1* funcRescale =
new TF1(
98 vector<TString> digiNames,
99 vector<vector<vector<vector<BmnSigInfo*>>>> digiVecs)
101 vector<TClonesArray*> ars;
105 printf(
"%s recorded entries = %lld\n", fileName.
Data(), NEventsMC);
106 for (
TString& digiName : digiNames) {
109 ars.push_back(arDigi);
111 for (
size_t i = 0;
i < digiVecs.size();
i++)
118 vector<TString> hitNames,
119 vector<vector<vector<vector<BmnSigInfo*>>>> clusterVecs)
121 vector<TClonesArray*> hitArr;
125 printf(
"%s recorded entries = %lld\n", fileName.
Data(), NEvents);
126 for (
TString& hitName : hitNames) {
129 hitArr.push_back(arDigi);
145 vector<TString> subTrackNames,
146 vector<TString> hitNames,
147 vector<vector<vector<vector<BmnSigInfo*>>>> clusterVecs)
150 vector<TClonesArray*> subTrackArr;
151 vector<TClonesArray*> hitArr;
155 printf(
"%s recorded entries = %lld\n", fileName.
Data(), NEvents);
159 for (
TString& subTrackName : subTrackNames) {
161 if (subTrackName.Length() > 0)
163 subTrackArr.push_back(arDigi);
165 for (
TString& hitName : hitNames) {
168 hitArr.push_back(arDigi);
179 chain, globalTrackArr,
nullptr, hitArr[2],
fCscStationSet, clusterVecs[2]);
186 if (fileNameMC ==
"" || fileNameEx ==
"") {
187 cout <<
"Files need to be specified!" << endl;
190 TString GlobalTrackName =
"BmnGlobalTrack";
191 vector<TString> mcDigiNames = {
"BmnGemStripDigit",
"BmnSiliconDigit",
"BmnCSCDigit"};
195 vector<TString> subTrackNames = {
"BmnGemTrack",
"BmnSiliconTrack",
""};
196 vector<TString> hitNames = {
"BmnGemStripHit",
"BmnSiliconHit",
"BmnCSCHit"};
214 vector<vector<vector<BmnSigInfo*>>>& infoVec)
216 printf(
"CreateDigitDistributions started for %s\n", digits->
GetClass()->
GetName());
236 for (
size_t iStation = 0; iStation < infoVec.size(); iStation++) {
237 printf(
"iStation %zu\n", iStation);
238 for (
size_t iModule = 0; iModule < infoVec[iStation].size(); iModule++) {
239 printf(
"\tiModule %zu\n", iModule);
240 for (
size_t iLayer = 0; iLayer < infoVec[iStation][iModule].size(); iLayer++) {
241 printf(
"\t\tiLayer %zu\n", iLayer);
242 BmnSigInfo* info = infoVec[iStation][iModule][iLayer];
247 printf(
"\t\t\tMin = %f max = %f\n", minVal, maxVal);
248 TString name =
Form(
"Sig_mc_%s_%zu_%zu_%zu", digits->
GetName(), iStation, iModule, iLayer);
251 name =
Form(
"IntSignal_%s_%zu_%zu_%zu", digits->
GetName(), iStation, iModule, iLayer);
275 for (
size_t iStation = 0; iStation < infoVec.size(); iStation++) {
276 for (
size_t iModule = 0; iModule < infoVec[iStation].size(); iModule++) {
277 for (
size_t iLayer = 0; iLayer < infoVec[iStation][iModule].size(); iLayer++) {
278 BmnSigInfo* info = infoVec[iStation][iModule][iLayer];
291 Form(
"%s_%zu_%zu_%zu", digits->
GetName(), iStation, iModule, iLayer),
294 if (x[0] >= info->maxVal)
296 Int_t iBin = info->hIntSig->GetXaxis()->FindBin(x[0]);
297 Int_t jBin = iBin + ((x[0] > info->hIntSig->GetBinCenter(iBin)) ? 1 : -1);
298 Double_t v = info->hIntSig->GetBinContent(iBin)
299 + (info->hIntSig->GetBinContent(jBin) - info->hIntSig->GetBinContent(iBin)) * 2
300 * abs(x[0] - info->hIntSig->GetBinCenter(iBin))
301 / (info->hIntSig->GetBinWidth(iBin) + info->hIntSig->GetBinWidth(jBin));
char * Form(const char *fmt,...)
BmnStatus
Define status code.
BmnStatus CreateRescales(TString fileNameMC, TString fileNameEx)
void CreateStripVectors()
void FreeVector3D(vector< vector< vector< cl * > > > vvv)
vector< vector< vector< BmnSigInfo * > > > fStripGemInfoEx
TF1 * GetRescaleFunc(TString name, TF1 *mc, TF1 *ex)
void CreateClusterDistributions(TTree *treeDST, TClonesArray *globTracks, TClonesArray *subTracks, TClonesArray *gemHits, ClStationSet *ss, vector< vector< vector< BmnSigInfo * > > > &infoVec)
Template function aimed to create exp cluster signal distribution function (Hits from tracks variant)...
vector< vector< vector< TF1 * > > > fStripGemRescale
BmnStatus LoadDigitDistributionsFromFile(TString name, vector< TString > digiNames, vector< vector< vector< vector< BmnSigInfo * > > > > digiVecs)
BmnStatus LoadClusterDistributionsFromFile(TString name, vector< TString > clusterNames, vector< vector< vector< vector< BmnSigInfo * > > > > clusterVecs)
vector< vector< vector< TF1 * > > > fStripCSCRescale
void CreateDigitDistributions(TTree *treeDig, TClonesArray *digits, vector< vector< vector< BmnSigInfo * > > > &infoVec)
BmnCSCStationSet * fCscStationSet
void FillInfoVector(ClStationSet *ss, vector< vector< vector< BmnSigInfo * > > > &vvv)
Template function for generating 3D vector of BmnSigInfo objects.
TCanvas * GetCanvas(ClStationSet *ss)
vector< vector< vector< BmnSigInfo * > > > fStripCSCInfoEx
void FillRescaleVector(ClStationSet *ss, vector< vector< vector< BmnSigInfo * > > > &vMC, vector< vector< vector< BmnSigInfo * > > > &vEx, vector< vector< vector< TF1 * > > > &vRescale)
vector< vector< vector< BmnSigInfo * > > > fStripSilInfoMC
BmnStatus LoadClustersOfTrackDistributionsFromFile(TString fileName, TString globalTrackNames, vector< TString > subTrackNames, vector< TString > hitNames, vector< vector< vector< vector< BmnSigInfo * > > > > clusterVecs)
vector< vector< vector< BmnSigInfo * > > > fStripGemInfoMC
BmnGemStripStationSet * fGemStationSet
BmnRescale(UInt_t periodId, UInt_t runId, Double_t lowThr=0, Double_t ClusterSizeThr=0, Int_t nBins=1e6)
vector< vector< vector< BmnSigInfo * > > > fStripCSCInfoMC
BmnSiliconStationSet * fSilStationSet
vector< vector< vector< TF1 * > > > fStripSilRescale
vector< vector< vector< BmnSigInfo * > > > fStripSilInfoEx
Class BmnStripDigit Base class for strip detector digits.
Double_t GetStripSignal()
virtual void SetLineColor(Color_t lcolor)
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
TClass * GetClass() const
const char * GetName() const override
virtual Double_t GetXmax() const
virtual void SetNpx(Int_t npx=100)
virtual Double_t GetX(Double_t y, Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
virtual Double_t GetXmin() const
virtual Int_t Fill(const char *name, Double_t w)
virtual void SetBinContent(Int_t bin, Double_t content)
virtual Double_t GetBinContent(Int_t bin) const
virtual void Scale(Double_t c1=1, Option_t *option="")
const char * GetName() const override
Int_t GetEntriesFast() const
TObject * UncheckedAt(Int_t i) const
const char * Data() const
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
virtual Long64_t GetEntries() const