12 fAna =
new FairRunAna();
19 for (
Int_t iRes = 0; iRes < nRes; iRes++) {
20 for (
Int_t iStat = 0; iStat <
silicon->GetNStations(); iStat++)
21 for (
Int_t iMod = 0; iMod <
silicon->GetStation(iStat)->GetNModules(); iMod++)
22 hResSil[iRes][iStat][iMod]->Reset();
24 for (
Int_t iStat = 0; iStat <
gem->GetNStations(); iStat++)
25 for (
Int_t iMod = 0; iMod <
gem->GetStation(iStat)->GetNModules(); iMod++)
26 hResGem[iRes][iStat][iMod]->Reset();
35 for (
Int_t iRes = 0; iRes < nRes; iRes++) {
36 for (
Int_t iStat = 0; iStat <
silicon->GetNStations(); iStat++)
37 for (
Int_t iMod = 0; iMod <
silicon->GetStation(iStat)->GetNModules(); iMod++) {
39 hResSil[iRes][iStat][iMod]->Write();
42 for (
Int_t iStat = 0; iStat <
gem->GetNStations(); iStat++)
43 for (
Int_t iMod = 0; iMod <
gem->GetStation(iStat)->GetNModules(); iMod++) {
45 hResGem[iRes][iStat][iMod]->Write();
59 cout <<
"Processing file# " << dst << endl;
64 if (iEvent % 1000 == 0)
65 cout <<
"Event# " << iEvent << endl;
87 if (track->GetSilTrackIndex() != -1) {
102 hits.push_back(*hit);
107 for (
auto it = hits.begin(); it != hits.end(); it++) {
114 TString det = (Z > 30.) ?
"GEM" :
"SILICON";
120 vector<BmnHit> hits0;
122 for (
auto it1 = hits.begin(); it1 != hits.end(); it1++) {
126 hits0.push_back(*it1);
132 doKalman(track, hits0, Z, xUpdated, yUpdated);
137 h[0][stat][mod]->
Fill(xOrig - xUpdated);
138 h[1][stat][mod]->
Fill(yOrig - yUpdated);
148 const Int_t nRes = 2;
153 for (
Int_t iRes = 0; iRes < nRes; iRes++) {
158 for (
Int_t iStat = 0; iStat <
silicon->GetNStations(); iStat++) {
161 for (
Int_t iMod = 0; iMod <
silicon->GetStation(iStat)->GetNModules(); iMod++)
163 new TH1F(
Form(
"SILICON, Res %s, Stat %d, Mod %d", res.Data(), iStat, iMod),
164 Form(
"SILICON, Res %s, Stat %d, Mod %d", res.Data(), iStat, iMod), 200, -1., +1.);
169 for (
Int_t iStat = 0; iStat <
gem->GetNStations(); iStat++) {
170 hResGem[iRes][iStat] =
new TH1F*[
gem->GetStation(iStat)->GetNModules()];
172 for (
Int_t iMod = 0; iMod <
gem->GetStation(iStat)->GetNModules(); iMod++)
174 new TH1F(
Form(
"GEM, Res %s, Stat %d, Mod %d", res.Data(), iStat, iMod),
175 Form(
"GEM, Res %s, Stat %d, Mod %d", res.Data(), iStat, iMod), 200, -1., +1.);
181 Fatal(
"BmnDataAnalRun7::doResidAnal()",
"No geometry file passed!!!");
185 vector<TString> fList;
194 for (
auto itFile = fList.begin(); itFile != fList.end(); itFile++) {
209 fList =
mAnal->createFilelist();
215 for (
auto itFile = fList.begin(); itFile != fList.end(); itFile++) {
231 FairTrackParam par = *first;
232 BmnStatus status =
fKalman->TGeoTrackPropagate(&par, Z, last->GetQp() > 0. ? 2212 : -211,
nullptr,
nullptr,
kTRUE);
249 FairTrackParam par = *first;
254 fKalman->TGeoTrackPropagate(&par, hit.GetZ(), last->GetQp() > 0. ? 2212 : -211,
nullptr,
nullptr,
kTRUE);
259 fKalman->Update(&par, &hit, chi2);
263 if (
fKalman->TGeoTrackPropagate(&par, Z, last->GetQp() > 0. ? 2212 : -211,
nullptr,
nullptr,
kTRUE) ==
kBMNSUCCESS)
265 xUpdated = par.GetX();
266 yUpdated = par.GetY();
char * Form(const char *fmt,...)
BmnStatus
Define status code.
void calcResiduals(TString)
BmnMassSpectrumAnal * mAnal
void writeHistos(TString)
void doKalman(BmnGlobalTrack *, Double_t, Double_t &, Double_t &)
void DoNormalization(TH1F *)
BmnKalmanFilter * fKalman
BmnGemStripStationSet * gem
TClonesArray * fSiliconTracks
BmnSiliconStationSet * silicon
TClonesArray * fGemTracks
TClonesArray * fSiliconHits
TClonesArray * fGlobTracks
Int_t GetGemTrackIndex() const
Accessors.
Short_t GetStation() const
vector< TString > GetFileList()
FairTrackParam * GetParamFirst()
Int_t GetNHits() const
Accessors.
Int_t GetHitIndex(Int_t iHit) const
FairTrackParam * GetParamLast()
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
static TGeoManager * Import(const char *filename, const char *name="", Option_t *option="")
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
virtual Int_t GetNbinsX() const
virtual void SetBinError(Int_t bin, Double_t error)
virtual Int_t Fill(const char *name, Double_t w)
virtual void SetBinContent(Int_t bin, Double_t content)
virtual Double_t GetEntries() const
virtual Double_t GetBinContent(Int_t bin) const
virtual void Fatal(const char *method, const char *msgfmt,...) const
const char * Data() const
static TString Format(const char *fmt,...)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const