Skip to content
Snippets Groups Projects
Commit 490dda2d authored by Sergey Gorbunov's avatar Sergey Gorbunov
Browse files

cleanup of much digi QA

parent 04a5f6bd
No related branches found
No related tags found
1 merge request!152cleanup of much digi QA
This diff is collapsed.
...@@ -26,6 +26,7 @@ class TCanvas; ...@@ -26,6 +26,7 @@ class TCanvas;
class TH1F; class TH1F;
class TH2F; class TH2F;
class TVector2; class TVector2;
class CbmMuchPad;
/// QA for the MUCH detector after a "digitization" step of the simulation. /// QA for the MUCH detector after a "digitization" step of the simulation.
/// The class reimplements corresponding QA checks from old CbmMuchHitFinderQa class /// The class reimplements corresponding QA checks from old CbmMuchHitFinderQa class
...@@ -38,41 +39,38 @@ public: ...@@ -38,41 +39,38 @@ public:
virtual ~CbmMuchDigitizerQa(); virtual ~CbmMuchDigitizerQa();
virtual InitStatus Init(); virtual InitStatus Init();
virtual void Exec(Option_t* option); virtual void Exec(Option_t* option);
virtual void FinishTask(); virtual void Finish();
virtual void SetParContainers(); virtual void SetParContainers();
protected: /// Prepare Qa output and return it as a reference to an internal folder.
/* DigitizerQa - analysis of digitizer performance - charge distributions /// The reference is non-const, because FairSink can not write const objects
* for tracks. Track length distrivutions. Statistics on particle types TFolder& GetQa();
*/
void DigitizerQa();
/* Occupance analysis - all pads,fired pads,
* and fired/all distributions as functions of radius
*/
void OccupancyQa();
private: private:
Int_t GetNChannels(Int_t iStation); CbmMuchDigitizerQa(const CbmMuchDigitizerQa&);
Int_t GetNSectors(Int_t iStation); CbmMuchDigitizerQa& operator=(const CbmMuchDigitizerQa&);
TVector2 GetMinPadSize(Int_t iStation);
TVector2 GetMaxPadSize(Int_t iStation);
static Double_t LandauMPV(Double_t* x, Double_t* par); static Double_t LandauMPV(Double_t* x, Double_t* par);
static Double_t MPV_n_e(Double_t Tkin, Double_t mass); static Double_t MPV_n_e(Double_t Tkin, Double_t mass);
CbmMuchDigitizerQa(const CbmMuchDigitizerQa&); /// Occupance analysis - all pads,fired pads,
CbmMuchDigitizerQa& operator=(const CbmMuchDigitizerQa&); /// and fired/all distributions as functions of radius
///
void OccupancyQa();
TFolder* histFolder; /// get pad from the digi address
const CbmMuchPad* GetPad(UInt_t address) const;
void InitChargeHistos(); void InitChargeHistos();
void InitPadHistos(); void InitPadHistos();
void InitLengthHistos(); void InitLengthHistos();
void InitChannelPadInfo(); int InitChannelPadInfo();
void InitFits(); void InitFits();
void InitCanvases(); void InitCanvases();
void DeInit(); void DeInit();
int CheckConsistency();
int ProcessMCPoints();
void FillTotalPadsHistos(); void FillTotalPadsHistos();
void FillChargePerPoint(); void FillChargePerPoint();
void FillDigitizerPerformancePlots(); void FillDigitizerPerformancePlots();
...@@ -84,6 +82,8 @@ private: ...@@ -84,6 +82,8 @@ private:
void DrawLengthCanvases(); void DrawLengthCanvases();
void OutputNvsS(); void OutputNvsS();
TFolder* histFolder; /// folder wich contains histogramms
// geometry // geometry
CbmMuchGeoScheme* fGeoScheme = nullptr; CbmMuchGeoScheme* fGeoScheme = nullptr;
Int_t fNstations = 0; Int_t fNstations = 0;
...@@ -104,9 +104,9 @@ private: ...@@ -104,9 +104,9 @@ private:
std::vector<TH2F*> fvUsPadsFiredXY; // fired pads vs XY, per station std::vector<TH2F*> fvUsPadsFiredXY; // fired pads vs XY, per station
// output histograms // output histograms
TH1F* fhMcPointCharge = nullptr; /// MC point charge TH1F* fhTrackCharge = nullptr; /// MC point charge
TH1F* fhMcPointChargeLog = nullptr; /// MC point charge log scale TH1F* fhTrackChargeLog = nullptr; /// MC point charge log scale
TH1F* fhMcPointChargePr_1GeV_3mm = TH1F* fhTrackChargePr_1GeV_3mm =
nullptr; /// MC point charge for selected protons nullptr; /// MC point charge for selected protons
TH1F* fhTrackLength = nullptr; TH1F* fhTrackLength = nullptr;
...@@ -114,17 +114,17 @@ private: ...@@ -114,17 +114,17 @@ private:
TH1F* fhTrackLengthPr = nullptr; TH1F* fhTrackLengthPr = nullptr;
TH1F* fhTrackLengthEl = nullptr; TH1F* fhTrackLengthEl = nullptr;
TH2F* fhMcPointChargeVsTrackEnergyLog = nullptr; TH2F* fhTrackChargeVsTrackEnergyLog = nullptr;
TH2F* fhMcPointChargeVsTrackEnergyLogPi = nullptr; TH2F* fhTrackChargeVsTrackEnergyLogPi = nullptr;
TH2F* fhMcPointChargeVsTrackEnergyLogPr = nullptr; TH2F* fhTrackChargeVsTrackEnergyLogPr = nullptr;
TH2F* fhMcPointChargeVsTrackEnergyLogEl = nullptr; TH2F* fhTrackChargeVsTrackEnergyLogEl = nullptr;
TH2F* fhMcPointChargeVsTrackLength = nullptr; TH2F* fhTrackChargeVsTrackLength = nullptr;
TH2F* fhMcPointChargeVsTrackLengthPi = nullptr; TH2F* fhTrackChargeVsTrackLengthPi = nullptr;
TH2F* fhMcPointChargeVsTrackLengthPr = nullptr; TH2F* fhTrackChargeVsTrackLengthPr = nullptr;
TH2F* fhMcPointChargeVsTrackLengthEl = nullptr; TH2F* fhTrackChargeVsTrackLengthEl = nullptr;
TH2F* fhNpadsVsS = nullptr; TH2F* fhNpadsVsS = nullptr;
std::vector<TH1F*> fvMcPointCharge; // MC point charge per station std::vector<TH1F*> fvTrackCharge; // MC point charge per station
std::vector<TH1F*> fvPadsTotalR; // number of pads vs R, per station std::vector<TH1F*> fvPadsTotalR; // number of pads vs R, per station
std::vector<TH1F*> fvPadsFiredR; // fired pads vs R, per station std::vector<TH1F*> fvPadsFiredR; // fired pads vs R, per station
std::vector<TH1F*> fvPadOccupancyR; // pad occupancy vs R, per station std::vector<TH1F*> fvPadOccupancyR; // pad occupancy vs R, per station
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment