3#include <TSystemDirectory.h>
4#include <TCollection.h>
5#include <TClonesArray.h>
17#include <UniDetectorParameter.h>
25#ifndef BMNMASSSPECTRUMANAL_H
26#define BMNMASSSPECTRUMANAL_H 1
57 vector <Double_t> DCA1, vector <Double_t> DCA2, vector <Double_t> DCA12, vector <Double_t> PATH,
58 vector <Int_t> nHitsPos, vector <Int_t> nHitsNeg) {
61 for (
auto dca0 : DCA0)
62 for (
auto dca1 : DCA1)
63 for (
auto dca2 : DCA2)
64 for (
auto dca12 : DCA12)
65 for (
auto path : PATH)
66 for (
auto nPos : nHitsPos)
67 for (
auto nNeg : nHitsNeg) {
78 if (fParticlePairCuts->GetEntriesFast())
103 void DoOptimization();
106 Int_t FinBin(map <Int_t, pair <Double_t, Double_t>> binMap, Double_t value) {
107 for (
auto it : binMap) {
108 Int_t bin = it.first;
109 Double_t
min = it.second.first;
110 Double_t
max = it.second.second;
112 if (value >
min && value <
max)
119 Bool_t isVectorOk(vector <Double_t> vector) {
121 for (
auto value : vector)
122 if (TMath::Abs(value) > 100. || TMath::IsNaN(value))
129 void ReadFile(TString,
BmnParticlePairCut* cut0 =
nullptr, TClonesArray* triggEffInfo =
nullptr, Double_t pathMin = 0., Double_t pathMax = 0.);
132 void fitSpectrum(TH1F*, Double_t&, Double_t&, pair <Double_t, Double_t>&, pair <Double_t, Double_t>&);
134 static Double_t
background(Double_t*, Double_t*);
135 static Double_t
signal(Double_t*, Double_t*);
138 void GetPtY(vector <Double_t>, vector <Double_t>, Double_t&, Double_t&);
140 Double_t
deltaB(TF1*
f, TFitResultPtr fitRes) {
141 TH1F* h =
new TH1F(
"h",
"h", 75.,
xLow,
xUp);
147 Double_t err =
f->IntegralError(
min - .5 * h->GetBinWidth(1),
max + .5 * h->GetBinWidth(1),
148 fitRes->GetParams(), fitRes->GetCovarianceMatrix().GetMatrixArray()) / h->GetBinWidth(1);
169 TClonesArray* fParticlePairCuts;
176 Double_t fBackground;
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
map< Int_t, pair< Double_t, Double_t > > fPtBinMap
void SetCuts(vector< Double_t > DCA0, vector< Double_t > DCA1, vector< Double_t > DCA2, vector< Double_t > DCA12, vector< Double_t > PATH, vector< Int_t > nHitsPos, vector< Int_t > nHitsNeg)
virtual ~BmnMassSpectrumAnal()
void SetBackgroungCut(Double_t b)
vector< TString > createFilelist()
static Double_t fitFunction(Double_t *, Double_t *)
map< Int_t, pair< Double_t, Double_t > > fYBinMap
Double_t deltaB(TF1 *f, TFitResultPtr fitRes)
void SetStartRun(Int_t start)
void SetSignalCut(Double_t s)
vector< TString > fInFiles
void ReadFile(TString, BmnParticlePairCut *cut0=nullptr, TClonesArray *triggEffInfo=nullptr, Double_t pathMin=0., Double_t pathMax=0.)
Bool_t checkFit(BmnParticlePairCut *)
void SetFinishRun(Int_t finish)
map< Int_t, pair< Double_t, Double_t > > fPathBins
TFitResultPtr fitSpectrum(TH1F *)
static Double_t signal(Double_t *, Double_t *)
void SetTarget(TString t)
vector< TString > fTarget
static Double_t background(Double_t *, Double_t *)
void GetPtY(vector< Double_t >, vector< Double_t >, Double_t &, Double_t &)
vector< TString > GetFileList()
void SetSpectrumRange(Double_t min, Double_t max)
void SetNHitsGemNeg(Int_t nHits)
void SetNHitsGemPos(Int_t nHits)
void SetDca12(Double_t v)