42 if (minMul1 != minMul2 || maxMul1 != maxMul2 || trig1 == trig2)
64 vector<Double_t> triggEffs;
65 vector<Double_t> triggEffErrs;
79 new TH1F(
"Eff",
Form(
"Efficiency of %s",
fTrigger.Data()), triggEffs.size(), 0., triggEffs.size());
82 effGr->
SetBinContent(iMultBin + 1, (triggEffs.at(iMultBin) > 1.) ? 1. : triggEffs.at(iMultBin));
83 effGr->
SetBinError(iMultBin + 1, triggEffErrs.at(iMultBin));
107 effGr->
Draw(
"PE1X0");
127 const Int_t nTrigCond = 2;
129 map<Int_t, pair<TH1F*, TH1F*>> histoMap;
132 auto itShifted = next(it, iMultBin);
135 for (
Int_t iCond = 0; iCond < nTrigCond; iCond++) {
136 TString hName =
"Target: " + targ
139 +
TString::Format(
", minMult (>=) %d, maxMult (<) %d", itShifted->second.first,
140 itShifted->second.second);
146 histoMap[iMultBin] = make_pair(vSet.at(0), vSet.at(1));
150 pair<Double_t, Double_t> T = make_pair(-1., -1.);
151 pair<Double_t, Double_t> B = make_pair(-1., -1.);
153 TFile* out =
new TFile(
"outH.root",
"recreate");
156 vector<TH1F*> denoms;
158 vector<Double_t> nomsSignal;
159 vector<Double_t> denomsSignal;
161 vector<Double_t> errsRelTot;
163 for (
auto histo : histoMap) {
164 TH1F* hNom = histo.second.second;
165 TH1F* hDenom = histo.second.first;
168 Double_t dS = 0., dB = 0., errTotRelNom = 0., errTotRelDenom = 0.;
172 nomsSignal.push_back(T.second - B.second);
181 errTotRelNom =
TMath::Sqrt((dS / (T.second - B.second)) * (dS / (T.second - B.second))
182 + (dB / B.second) * (dB / B.second));
187 denomsSignal.push_back(T.second - B.second);
196 errTotRelDenom =
TMath::Sqrt((dS / (T.second - B.second)) * (dS / (T.second - B.second))
197 + (dB / B.second) * (dB / B.second));
200 noms.push_back(hNom);
201 denoms.push_back(hDenom);
203 errsRelTot.push_back(
TMath::Sqrt(errTotRelNom * errTotRelNom + errTotRelDenom * errTotRelDenom));
210 gStyle->SetTitleFontSize(0.1);
214 TH1F*
n = noms.at(iMultBin);
229 t1->
DrawLatex(.1, .85,
Form(
"S (bin cont. in sig. reg. - bckgrnd) = %d", (
Int_t)nomsSignal.at(iMultBin)));
231 TH1F* d = denoms.at(iMultBin);
248 Form(
"S (bin cont. in sig. reg. - bckgrnd) = %d", (
Int_t)denomsSignal.at(iMultBin)));
253 vector<Double_t> triggEffs;
255 triggEffs.push_back(nomsSignal.at(iMultBin) / denomsSignal.at(iMultBin));
259 new TH1F(
"Eff",
Form(
"Efficiency of %s",
fTrigger.Data()), triggEffs.size(), 0., triggEffs.size());
262 effGr->
SetBinContent(iMultBin + 1, (triggEffs.at(iMultBin) > 1.) ? 1. : triggEffs.at(iMultBin));
263 effGr->
SetBinError(iMultBin + 1, triggEffs.at(iMultBin) * errsRelTot.at(iMultBin));
287 effGr->
Draw(
"PE1X0");
306 cuts = tCutMap.find(target)->second;
310 const Int_t nTrigCond = 2;
316 for (
Int_t iCond = 0; iCond < nTrigCond; iCond++) {
319 TString hName =
"Target: " + targ
326 auto itShifted = next(it, iMultBin);
327 hName =
"Target: " + targ
330 +
TString::Format(
", minMult (>=) %d, maxMult (<) %d", itShifted->second.first,
331 itShifted->second.second);
338 vector<TString> triggsSet;
342 triggsSet.push_back(
"BT+BD2");
343 triggsSet.push_back(
"BT+BD3");
345 triggsSet.push_back(
"BT+FD2");
346 triggsSet.push_back(
"BT+FD3");
347 }
else if (
fTrigger ==
"BT+BD1+FD2")
351 Fatal(
"BmnTriggerEfficiencyRun7::triggerEfficiency",
"Trigger condition not supported!!!");
367 for (
Int_t iCond = 0; iCond < nTrigCond; iCond++)
376 vector<TString> list;
394 for (
auto it : triggsSet) {
398 isNeededTrigger =
kTRUE;
403 if (!isNeededTrigger)
418 isNeededTarget =
kTRUE;
427 if (!tmp.Contains(
Form(
"%d", iFile)))
494 if (v0z < 0. || v0z > 50.)
521 if (DCA0 > dca0 || DCA12 > dca12)
524 if (DCA1 < dca1 || DCA2 < dca2 || PATH < path)
527 if (protonNGemHits <= nPos || pionNGemHits <= nNeg)
537 cout <<
"File " << f <<
" processed# " << endl;
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
TString GetTrigger(Int_t)
map< TString, BmnParticlePairCut * > GetTargetCutsMap()
void SetTriggerEffData(TString trigger, TString data)
TClonesArray * GetFilledArray()
vector< TString > createFilelist()
Double_t deltaB(TF1 *f, TFitResultPtr fitRes)
vector< TString > fInFiles
TFitResultPtr fitSpectrum(TH1F *)
vector< TString > fTarget
Int_t GetNHitsPart1(TString det="")
Int_t GetNHitsPart2(TString det="")
map< Int_t, pair< Int_t, Int_t > > fMultMap
Bool_t isAddTriggerCondition
Int_t FinMultBin(Int_t multValue)
void ReadFile(TString, BmnParticlePairCut *cut0)
vector< TString > fEffFiles
virtual void SetTitleOffset(Float_t offset=1)
virtual void SetLabelSize(Float_t size=0.04)
virtual void SetLabelOffset(Float_t offset=0.005)
virtual void SetTitleSize(Float_t size=0.04)
virtual void SetNdivisions(Int_t n1, Int_t n2, Int_t n3, Bool_t optim=kTRUE)
virtual void SetLineWidth(Width_t lwidth)
virtual void SetLineColor(Color_t lcolor)
virtual void SetMarkerColor(Color_t mcolor=1)
virtual void SetMarkerStyle(Style_t mstyle=1)
virtual void SetTextSize(Float_t tsize=1)
virtual void SetBinLabel(Int_t bin, const char *label)
void CenterTitle(Bool_t center=kTRUE)
TVirtualPad * cd(Int_t subpadnumber=0) override
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 Write(const char *name=nullptr, Int_t opt=0, Int_t bufsize=0) const override
virtual void SetBinError(Int_t bin, Double_t error)
void Draw(Option_t *option="") override
virtual void SetBinContent(Int_t bin, Double_t content)
TList * GetListOfFunctions() const
TObject * Clone(const char *newname="") const override
TLatex * DrawLatex(Double_t x, Double_t y, const char *text)
TObject * FindObject(const char *name) const override
virtual void SetTitle(const char *title="")
Int_t GetEntriesFast() const
TObject * UncheckedAt(Int_t i) const
friend friend class TClonesArray
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
virtual void Fatal(const char *method, const char *msgfmt,...) const
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
void SaveAs(const char *filename="", Option_t *option="") const override
const char * Data() const
static TString Format(const char *fmt,...)
TString & ReplaceAll(const char *s1, const char *s2)
virtual void SetNDC(Bool_t isNDC=kTRUE)
Double_t efficiencyError()
pair< Int_t, Int_t > multilplicity()
UniRun.h Class for the table: run_.
static UniRun * GetRun(int period_number, int run_number)
get run from the database
TString GetBeamParticle()
get beam particle of the current run
TString GetTargetParticle()
get target particle of the current run
*brief user defined string literal for JSON values *sa std::size_t n
Double_t Sqrt(Double_t x)