Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • le.koch/cbmroot
  • patrick.pfistner_AT_kit.edu/cbmroot
  • lena.rossel_AT_stud.uni-frankfurt.de/cbmroot
  • i.deppner/cbmroot
  • fweig/cbmroot
  • karpushkin_AT_inr.ru/cbmroot
  • v.akishina/cbmroot
  • rishat.sultanov_AT_cern.ch/cbmroot
  • l_fabe01_AT_uni-muenster.de/cbmroot
  • pwg-c2f/cbmroot
  • j.decuveland/cbmroot
  • a.toia/cbmroot
  • i.vassiliev/cbmroot
  • n.herrmann/cbmroot
  • o.lubynets/cbmroot
  • se.gorbunov/cbmroot
  • cornelius.riesen_AT_physik.uni-giessen.de/cbmroot
  • zhangqn17_AT_mails.tsinghua.edu.cn/cbmroot
  • bartosz.sobol/cbmroot
  • ajit.kumar/cbmroot
  • computing/cbmroot
  • a.agarwal_AT_vecc.gov.in/cbmroot
  • osingh/cbmroot
  • wielanek_AT_if.pw.edu.pl/cbmroot
  • malgorzata.karabowicz.stud_AT_pw.edu.pl/cbmroot
  • m.shiroya/cbmroot
  • s.roy/cbmroot
  • p.-a.loizeau/cbmroot
  • a.weber/cbmroot
  • ma.beyer/cbmroot
  • d.klein/cbmroot
  • d.smith/cbmroot
  • mvdsoft/cbmroot
  • d.spicker/cbmroot
  • y.h.leung/cbmroot
  • aksharma/cbmroot
  • m.deveaux/cbmroot
  • mkunold/cbmroot
  • h.darwish/cbmroot
  • pk.sharma_AT_vecc.gov.in/cbmroot
  • f_fido01_AT_uni-muenster.de/cbmroot
  • g.kozlov/cbmroot
  • d.emschermann/cbmroot
  • evgeny.lavrik/cbmroot
  • v.friese/cbmroot
  • f.uhlig/cbmroot
  • ebechtel_AT_ikf.uni-frankfurt.de/cbmroot
  • a.senger/cbmroot
  • praisig/cbmroot
  • s.lebedev/cbmroot
  • redelbach_AT_compeng.uni-frankfurt.de/cbmroot
  • p.subramani/cbmroot
  • a_meye37_AT_uni-muenster.de/cbmroot
  • om/cbmroot
  • o.golosov/cbmroot
  • l.chlad/cbmroot
  • a.bercuci/cbmroot
  • d.ramirez/cbmroot
  • v.singhal/cbmroot
  • h.schiller/cbmroot
  • apuntke/cbmroot
  • f.zorn/cbmroot
  • rubio_AT_physi.uni-heidelberg.de/cbmroot
  • p.chudoba/cbmroot
  • apuntke/mcbmroot
  • r.karabowicz/cbmroot
66 results
Show changes
Commits on Source (2)
...@@ -130,9 +130,9 @@ InitStatus CbmMuchDigitizerQa::Init() { ...@@ -130,9 +130,9 @@ InitStatus CbmMuchDigitizerQa::Init() {
InitChargeHistos(); InitChargeHistos();
InitLengthHistos(); InitLengthHistos();
InitPadHistos(); InitPadHistos();
FillTotalPadsHistos();
InitChannelPadInfo(); InitChannelPadInfo();
InitFits(); InitFits();
FillTotalPadsHistos();
gDirectory = oldDirectory; gDirectory = oldDirectory;
return kSUCCESS; return kSUCCESS;
...@@ -187,33 +187,45 @@ void CbmMuchDigitizerQa::InitChannelPadInfo() { ...@@ -187,33 +187,45 @@ void CbmMuchDigitizerQa::InitChannelPadInfo() {
void CbmMuchDigitizerQa::InitCanvases() { void CbmMuchDigitizerQa::InitCanvases() {
fCanvCharge = /***** charge canvases ****/
new CbmQaCanvas("cMcPointCharge", "MC point charge", 2 * 800, 2 * 400); if (fMCTracks && fPoints) {
fCanvCharge->Divide2D(3); fCanvCharge =
new CbmQaCanvas("cMcPointCharge", "MC point charge", 2 * 800, 2 * 400);
fCanvStationCharge = new CbmQaCanvas( fCanvCharge->Divide2D(3);
"cMcPointChargeVsStation", "MC point charge per station", 2 * 800, 2 * 400);
fCanvStationCharge->Divide2D(fNstations); fCanvStationCharge = new CbmQaCanvas("cMcPointChargeVsStation",
"MC point charge per station",
fCanvChargeVsEnergy = new CbmQaCanvas("cMcPointChargeVsEnergy", 2 * 800,
"MC point charge vs particle Energy", 2 * 400);
2 * 800, fCanvStationCharge->Divide2D(fNstations);
2 * 400);
fCanvChargeVsEnergy->Divide2D(4); fCanvChargeVsEnergy = new CbmQaCanvas("cMcPointChargeVsEnergy",
"MC point charge vs particle Energy",
fCanvChargeVsLength = new CbmQaCanvas("cMcPointChargeVsLength", 2 * 800,
"MC point charge vs track length", 2 * 400);
2 * 800, fCanvChargeVsEnergy->Divide2D(4);
2 * 400);
fCanvChargeVsLength->Divide2D(4); fCanvChargeVsLength = new CbmQaCanvas("cMcPointChargeVsLength",
"MC point charge vs track length",
fCanvTrackLength = 2 * 800,
new CbmQaCanvas("cTrackLength", "track length", 2 * 800, 2 * 400); 2 * 400);
fCanvTrackLength->Divide2D(4); fCanvChargeVsLength->Divide2D(4);
fCanvNpadsVsArea = fOutFolder.Add(fCanvCharge);
new CbmQaCanvas("cNpadsVsArea", "N pads Vs Area", 2 * 800, 2 * 400); fOutFolder.Add(fCanvStationCharge);
fOutFolder.Add(fCanvChargeVsEnergy);
fOutFolder.Add(fCanvChargeVsLength);
}
/***** length canvas ****/
if (fMCTracks && fPoints) {
fCanvTrackLength =
new CbmQaCanvas("cTrackLength", "track length", 2 * 800, 2 * 400);
fCanvTrackLength->Divide2D(4);
fOutFolder.Add(fCanvTrackLength);
}
/***** pad canvases ****/
fCanvUsPadsFiredXY = new CbmQaCanvas( fCanvUsPadsFiredXY = new CbmQaCanvas(
"cPadsFiredXY", "Number of pads fired vs XY", 2 * 800, 2 * 400); "cPadsFiredXY", "Number of pads fired vs XY", 2 * 800, 2 * 400);
fCanvUsPadsFiredXY->Divide2D(fNstations); fCanvUsPadsFiredXY->Divide2D(fNstations);
...@@ -226,19 +238,31 @@ void CbmMuchDigitizerQa::InitCanvases() { ...@@ -226,19 +238,31 @@ void CbmMuchDigitizerQa::InitCanvases() {
new CbmQaCanvas("cPadsTotalR", "Total pads vs radius", 2 * 800, 2 * 400); new CbmQaCanvas("cPadsTotalR", "Total pads vs radius", 2 * 800, 2 * 400);
fCanvPadsTotalR->Divide2D(fNstations); fCanvPadsTotalR->Divide2D(fNstations);
fOutFolder.Add(fCanvCharge);
fOutFolder.Add(fCanvStationCharge);
fOutFolder.Add(fCanvChargeVsEnergy);
fOutFolder.Add(fCanvChargeVsLength);
fOutFolder.Add(fCanvTrackLength);
fOutFolder.Add(fCanvNpadsVsArea);
fOutFolder.Add(fCanvUsPadsFiredXY); fOutFolder.Add(fCanvUsPadsFiredXY);
fOutFolder.Add(fCanvPadOccupancyR); fOutFolder.Add(fCanvPadOccupancyR);
fOutFolder.Add(fCanvPadsTotalR); fOutFolder.Add(fCanvPadsTotalR);
/***** pad canvas (MC) ****/
if (fMCTracks && fPoints) {
fCanvNpadsVsArea =
new CbmQaCanvas("cNpadsVsArea", "N pads Vs Area", 2 * 800, 2 * 400);
fOutFolder.Add(fCanvNpadsVsArea);
}
} }
void CbmMuchDigitizerQa::InitChargeHistos() { void CbmMuchDigitizerQa::InitChargeHistos() {
if (!fMCTracks || !fPoints) { return; }
fvMcPointCharge.resize(fNstations);
for (Int_t i = 0; i < fNstations; i++) {
fvMcPointCharge[i] = new TH1F(
Form("hMcPointCharge%i", i + 1),
Form("MC point charge : Station %i; Charge [10^4 e]; Count", i + 1),
BINNING_CHARGE);
histFolder->Add(fvMcPointCharge[i]);
}
fhMcPointCharge = fhMcPointCharge =
new TH1F("hCharge", "Charge distribution from tracks", BINNING_CHARGE); new TH1F("hCharge", "Charge distribution from tracks", BINNING_CHARGE);
fhMcPointCharge->GetXaxis()->SetTitle("Charge [10^{4} electrons]"); fhMcPointCharge->GetXaxis()->SetTitle("Charge [10^{4} electrons]");
...@@ -322,6 +346,8 @@ void CbmMuchDigitizerQa::InitChargeHistos() { ...@@ -322,6 +346,8 @@ void CbmMuchDigitizerQa::InitChargeHistos() {
void CbmMuchDigitizerQa::InitLengthHistos() { void CbmMuchDigitizerQa::InitLengthHistos() {
if (!fMCTracks || !fPoints) { return; }
fhTrackLength = new TH1F("hTrackLength", "Track length", BINNING_LENGTH); fhTrackLength = new TH1F("hTrackLength", "Track length", BINNING_LENGTH);
fhTrackLengthPi = fhTrackLengthPi =
...@@ -347,8 +373,7 @@ void CbmMuchDigitizerQa::InitLengthHistos() { ...@@ -347,8 +373,7 @@ void CbmMuchDigitizerQa::InitLengthHistos() {
} }
void CbmMuchDigitizerQa::InitPadHistos() { void CbmMuchDigitizerQa::InitPadHistos() {
// non-MC
fvMcPointCharge.resize(fNstations);
fvPadsTotalR.resize(fNstations); fvPadsTotalR.resize(fNstations);
fvUsPadsFiredR.resize(fNstations); fvUsPadsFiredR.resize(fNstations);
fvUsPadsFiredXY.resize(fNstations); fvUsPadsFiredXY.resize(fNstations);
...@@ -360,11 +385,6 @@ void CbmMuchDigitizerQa::InitPadHistos() { ...@@ -360,11 +385,6 @@ void CbmMuchDigitizerQa::InitPadHistos() {
Double_t rMax = station->GetRmax(); Double_t rMax = station->GetRmax();
Double_t rMin = station->GetRmin(); Double_t rMin = station->GetRmin();
fvMcPointCharge[i] = new TH1F(
Form("hMcPointCharge%i", i + 1),
Form("MC point charge : Station %i; Charge [10^4 e]; Count", i + 1),
BINNING_CHARGE);
fvPadsTotalR[i] = fvPadsTotalR[i] =
new TH1F(Form("hPadsTotal%i", i + 1), new TH1F(Form("hPadsTotal%i", i + 1),
Form("Number of pads vs radius: Station %i;Radius [cm]", i + 1), Form("Number of pads vs radius: Station %i;Radius [cm]", i + 1),
...@@ -404,21 +424,24 @@ void CbmMuchDigitizerQa::InitPadHistos() { ...@@ -404,21 +424,24 @@ void CbmMuchDigitizerQa::InitPadHistos() {
0.6 * rMin, 0.6 * rMin,
1.2 * rMax); 1.2 * rMax);
histFolder->Add(fvMcPointCharge[i]);
histFolder->Add(fvPadsTotalR[i]); histFolder->Add(fvPadsTotalR[i]);
histFolder->Add(fvUsPadsFiredXY[i]); histFolder->Add(fvUsPadsFiredXY[i]);
histFolder->Add(fvPadsFiredR[i]); histFolder->Add(fvPadsFiredR[i]);
histFolder->Add(fvPadOccupancyR[i]); histFolder->Add(fvPadOccupancyR[i]);
} }
fhNpadsVsS = new TH2F("hNpadsVsS",
"Number of fired pads vs pad area:area:n pads", // MC below
10, if (fMCTracks && fPoints) {
-5, fhNpadsVsS = new TH2F("hNpadsVsS",
0, "Number of fired pads vs pad area:area:n pads",
10, 10,
0.5, -5,
10.5); 0,
histFolder->Add(fhNpadsVsS); 10,
0.5,
10.5);
histFolder->Add(fhNpadsVsS);
}
} }
void CbmMuchDigitizerQa::FillTotalPadsHistos() { void CbmMuchDigitizerQa::FillTotalPadsHistos() {
...@@ -501,7 +524,9 @@ void CbmMuchDigitizerQa::Exec(Option_t*) { ...@@ -501,7 +524,9 @@ void CbmMuchDigitizerQa::Exec(Option_t*) {
OccupancyQa(); OccupancyQa();
DigitizerQa(); DigitizerQa();
DrawCanvases(); FillChargePerPoint();
FillDigitizerPerformancePlots();
if (fVerbose > 1) { if (fVerbose > 1) {
PrintFrontLayerPoints(); PrintFrontLayerPoints();
PrintFrontLayerDigis(); PrintFrontLayerDigis();
...@@ -587,9 +612,6 @@ void CbmMuchDigitizerQa::DigitizerQa() { ...@@ -587,9 +612,6 @@ void CbmMuchDigitizerQa::DigitizerQa() {
new ((*fPointInfos)[i]) new ((*fPointInfos)[i])
CbmMuchPointInfo(pdgCode, motherPdg, kine, length, stId); CbmMuchPointInfo(pdgCode, motherPdg, kine, length, stId);
} }
FillChargePerPoint();
FillDigitizerPerformancePlots();
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
...@@ -690,8 +712,14 @@ void CbmMuchDigitizerQa::FillDigitizerPerformancePlots() { ...@@ -690,8 +712,14 @@ void CbmMuchDigitizerQa::FillDigitizerPerformancePlots() {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
void CbmMuchDigitizerQa::DrawCanvases() { void CbmMuchDigitizerQa::DrawChargeCanvases() {
if (!fMCTracks || !fPoints) { return; }
for (Int_t i = 0; i < fNstations; i++) {
fCanvStationCharge->cd(i + 1);
fvMcPointCharge[i]->DrawCopy("", "");
}
fCanvCharge->cd(1); fCanvCharge->cd(1);
fhMcPointCharge->DrawCopy("", ""); fhMcPointCharge->DrawCopy("", "");
fCanvCharge->cd(2); fCanvCharge->cd(2);
...@@ -699,20 +727,6 @@ void CbmMuchDigitizerQa::DrawCanvases() { ...@@ -699,20 +727,6 @@ void CbmMuchDigitizerQa::DrawCanvases() {
fCanvCharge->cd(3); fCanvCharge->cd(3);
fhMcPointChargePr_1GeV_3mm->DrawCopy("", ""); fhMcPointChargePr_1GeV_3mm->DrawCopy("", "");
for (Int_t i = 0; i < 4; i++) {
fCanvTrackLength->cd(i + 1);
gPad->SetLogy();
gStyle->SetOptStat(1110);
}
fCanvTrackLength->cd(1);
fhTrackLength->DrawCopy("", "");
fCanvTrackLength->cd(2);
fhTrackLengthPi->DrawCopy("", "");
fCanvTrackLength->cd(3);
fhTrackLengthPr->DrawCopy("", "");
fCanvTrackLength->cd(4);
fhTrackLengthEl->DrawCopy("", "");
for (Int_t i = 0; i < 4; i++) { for (Int_t i = 0; i < 4; i++) {
fCanvChargeVsEnergy->cd(i + 1); fCanvChargeVsEnergy->cd(i + 1);
gPad->Range(0, 0, 200, 200); gPad->Range(0, 0, 200, 200);
...@@ -749,7 +763,10 @@ void CbmMuchDigitizerQa::DrawCanvases() { ...@@ -749,7 +763,10 @@ void CbmMuchDigitizerQa::DrawCanvases() {
fhMcPointChargeVsTrackLengthPr->DrawCopy("colz", ""); fhMcPointChargeVsTrackLengthPr->DrawCopy("colz", "");
fCanvChargeVsLength->cd(4); fCanvChargeVsLength->cd(4);
fhMcPointChargeVsTrackLengthEl->DrawCopy("colz", ""); fhMcPointChargeVsTrackLengthEl->DrawCopy("colz", "");
}
void CbmMuchDigitizerQa::DrawPadCanvases() {
//non-MC
for (Int_t i = 0; i < fNstations; i++) { for (Int_t i = 0; i < fNstations; i++) {
*fvPadsFiredR[i] = *fvUsPadsFiredR[i]; *fvPadsFiredR[i] = *fvUsPadsFiredR[i];
//fvPadsFiredR[i]->Sumw2(); //fvPadsFiredR[i]->Sumw2();
...@@ -757,8 +774,6 @@ void CbmMuchDigitizerQa::DrawCanvases() { ...@@ -757,8 +774,6 @@ void CbmMuchDigitizerQa::DrawCanvases() {
fvPadOccupancyR[i]->Divide(fvPadsFiredR[i], fvPadsTotalR[i]); fvPadOccupancyR[i]->Divide(fvPadsFiredR[i], fvPadsTotalR[i]);
fvPadOccupancyR[i]->Scale(100.); fvPadOccupancyR[i]->Scale(100.);
fCanvStationCharge->cd(i + 1);
fvMcPointCharge[i]->DrawCopy("", "");
fCanvPadOccupancyR->cd(i + 1); fCanvPadOccupancyR->cd(i + 1);
fvPadOccupancyR[i]->DrawCopy("", ""); fvPadOccupancyR[i]->DrawCopy("", "");
fCanvPadsTotalR->cd(i + 1); fCanvPadsTotalR->cd(i + 1);
...@@ -766,18 +781,36 @@ void CbmMuchDigitizerQa::DrawCanvases() { ...@@ -766,18 +781,36 @@ void CbmMuchDigitizerQa::DrawCanvases() {
fCanvUsPadsFiredXY->cd(i + 1); fCanvUsPadsFiredXY->cd(i + 1);
fvUsPadsFiredXY[i]->DrawCopy("colz", ""); fvUsPadsFiredXY[i]->DrawCopy("colz", "");
} }
fCanvNpadsVsArea->cd(); //MC below
fhNpadsVsS->DrawCopy("colz", ""); if (fMCTracks && fPoints) {
fCanvNpadsVsArea->cd();
fhNpadsVsS->DrawCopy("colz", "");
}
} }
void CbmMuchDigitizerQa::DrawLengthCanvases() {
void CbmMuchDigitizerQa::PrintFrontLayerPoints() { if (!fMCTracks || !fPoints) { return; }
if (!fMCTracks || !fPoints) { for (Int_t i = 0; i < 4; i++) {
LOG(debug) << " CbmMuchDigitizerQa::PrintFrontLayerPoints(): Found no MC " fCanvTrackLength->cd(i + 1);
"data. Skipping."; gPad->SetLogy();
return; gStyle->SetOptStat(1110);
} }
fCanvTrackLength->cd(1);
fhTrackLength->DrawCopy("", "");
fCanvTrackLength->cd(2);
fhTrackLengthPi->DrawCopy("", "");
fCanvTrackLength->cd(3);
fhTrackLengthPr->DrawCopy("", "");
fCanvTrackLength->cd(4);
fhTrackLengthEl->DrawCopy("", "");
}
void CbmMuchDigitizerQa::PrintFrontLayerPoints() {
if (!fMCTracks || !fPoints) { return; }
for (int i = 0; i < fPoints->GetEntriesFast(); i++) { for (int i = 0; i < fPoints->GetEntriesFast(); i++) {
CbmMuchPoint* point = (CbmMuchPoint*) fPoints->At(i); CbmMuchPoint* point = (CbmMuchPoint*) fPoints->At(i);
Int_t stId = CbmMuchAddress::GetStationIndex(point->GetDetectorID()); Int_t stId = CbmMuchAddress::GetStationIndex(point->GetDetectorID());
...@@ -820,6 +853,10 @@ void CbmMuchDigitizerQa::FinishTask() { ...@@ -820,6 +853,10 @@ void CbmMuchDigitizerQa::FinishTask() {
printf("FinishTask\n"); printf("FinishTask\n");
cout << "\n\n SG: Finish task!" << endl; cout << "\n\n SG: Finish task!" << endl;
DrawChargeCanvases();
DrawPadCanvases();
DrawLengthCanvases();
TDirectory* oldDirectory = gDirectory; TDirectory* oldDirectory = gDirectory;
bool oldBatchMode = gROOT->IsBatch(); bool oldBatchMode = gROOT->IsBatch();
...@@ -873,17 +910,6 @@ void CbmMuchDigitizerQa::OutputNvsS() { ...@@ -873,17 +910,6 @@ void CbmMuchDigitizerQa::OutputNvsS() {
fOutFolder.Add(c); fOutFolder.Add(c);
} }
// -------------------------------------------------------------------------
Double_t CbmMuchDigitizerQa::LandauMPV(Double_t* lg_x, Double_t* par) {
Double_t gaz_gain_mean = 1.7e+4;
Double_t scale = 1.e+6;
gaz_gain_mean /= scale;
Double_t mass = par[0]; // mass in MeV
Double_t x = TMath::Power(10, lg_x[0]);
return gaz_gain_mean * MPV_n_e(x, mass);
}
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
Int_t CbmMuchDigitizerQa::GetNChannels(Int_t iStation) { Int_t CbmMuchDigitizerQa::GetNChannels(Int_t iStation) {
Int_t nChannels = 0; Int_t nChannels = 0;
...@@ -952,6 +978,16 @@ TVector2 CbmMuchDigitizerQa::GetMaxPadSize(Int_t iStation) { ...@@ -952,6 +978,16 @@ TVector2 CbmMuchDigitizerQa::GetMaxPadSize(Int_t iStation) {
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// -------------------------------------------------------------------------
Double_t CbmMuchDigitizerQa::LandauMPV(Double_t* lg_x, Double_t* par) {
Double_t gaz_gain_mean = 1.7e+4;
Double_t scale = 1.e+6;
gaz_gain_mean /= scale;
Double_t mass = par[0]; // mass in MeV
Double_t x = TMath::Power(10, lg_x[0]);
return gaz_gain_mean * MPV_n_e(x, mass);
}
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
Double_t CbmMuchDigitizerQa::MPV_n_e(Double_t Tkin, Double_t mass) { Double_t CbmMuchDigitizerQa::MPV_n_e(Double_t Tkin, Double_t mass) {
Double_t logT; Double_t logT;
...@@ -973,16 +1009,6 @@ Double_t CbmMuchDigitizerQa::MPV_n_e(Double_t Tkin, Double_t mass) { ...@@ -973,16 +1009,6 @@ Double_t CbmMuchDigitizerQa::MPV_n_e(Double_t Tkin, Double_t mass) {
return fPol6.EvalPar(&logT, mpv_p); return fPol6.EvalPar(&logT, mpv_p);
} }
} }
void CbmMuchDigitizerQa::DivideCanvas2D(TCanvas* c, int nPads) {
// divide canvas into nPads in 2D
if (!c || nPads < 1) { return; }
int rows = (int) sqrt(nPads);
int cols = nPads / rows;
if (cols * rows < nPads) { cols++; }
c->Divide(cols, rows);
}
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
ClassImp(CbmMuchDigitizerQa) ClassImp(CbmMuchDigitizerQa)
...@@ -40,7 +40,6 @@ public: ...@@ -40,7 +40,6 @@ public:
virtual void Exec(Option_t* option); virtual void Exec(Option_t* option);
virtual void FinishTask(); virtual void FinishTask();
virtual void SetParContainers(); virtual void SetParContainers();
static void DivideCanvas2D(TCanvas* c, int nPads);
protected: protected:
/* DigitizerQa - analysis of digitizer performance - charge distributions /* DigitizerQa - analysis of digitizer performance - charge distributions
...@@ -65,24 +64,26 @@ private: ...@@ -65,24 +64,26 @@ private:
CbmMuchDigitizerQa& operator=(const CbmMuchDigitizerQa&); CbmMuchDigitizerQa& operator=(const CbmMuchDigitizerQa&);
TFolder* histFolder; TFolder* histFolder;
void InitCanvases();
void InitChargeHistos(); void InitChargeHistos();
void InitLengthHistos();
void InitPadHistos(); void InitPadHistos();
void InitLengthHistos();
void InitChannelPadInfo(); void InitChannelPadInfo();
void InitFits(); void InitFits();
void InitCanvases();
void DeInit(); void DeInit();
void FillTotalPadsHistos(); void FillTotalPadsHistos();
void DrawCanvases();
void OutputNvsS();
void FillChargePerPoint(); void FillChargePerPoint();
void FillDigitizerPerformancePlots(); void FillDigitizerPerformancePlots();
void PrintFrontLayerPoints(); void PrintFrontLayerPoints();
void PrintFrontLayerDigis(); void PrintFrontLayerDigis();
void DrawChargeCanvases();
void DrawPadCanvases();
void DrawLengthCanvases();
void OutputNvsS();
// geometry // geometry
CbmMuchGeoScheme* fGeoScheme = nullptr; CbmMuchGeoScheme* fGeoScheme = nullptr;
Int_t fNstations = 0; Int_t fNstations = 0;
......