MpdPidQA.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //------------------------------------------------------------------------------------------------------------------------
  2. #ifndef MPD_PID_QA_H
  3. #define MPD_PID_QA_H
  4. //------------------------------------------------------------------------------------------------------------------------
  5. /// \class MpdPidQA
  6. ///
  7. /// \brief
  8. /// \author Alexander Mudrokh (LHEP, JINR, Dubna)
  9. //------------------------------------------------------------------------------------------------------------------------
  10. #include "MpdPid.h"
  11. #include "Rtypes.h"
  12. #include "TGraphAsymmErrors.h"
  13. //------------------------------------------------------------------------------------------------------------------------
  14. using namespace std;
  15. typedef vector<TH1D*> vecTH1Dptrs;
  16. class MpdPidQA : public MpdPid
  17. {
  18. public:
  19. MpdPidQA(); /// default ctor
  20. MpdPidQA(Double_t sigmaTof, Double_t sigmaEloss, Double_t sqrts, /// generators: "URQMD", "LAQGSM" ("QGSM"), "DEFAULT", "NSIG" (for n-sigma method)
  21. Double_t EnLossCoef = 1., TString Generator = "DEFAULT", TString Tracking = "CFHM", /// tracking: "HP" (Hit Producer), "CF" (Cluster Finder)
  22. TString NSigPart = "pikapr"); /// possible expressions: el, mu, pi, ka, pr, de, tr, he3, he4
  23. virtual ~MpdPidQA(); /// destructor
  24. void FillDedxHists(Double_t, Double_t, Int_t);
  25. void Fillm2Hists(Double_t, Double_t, Int_t);
  26. void FillAmplHists(Double_t, Int_t);
  27. Bool_t FillEffContHists(Double_t, Double_t, Int_t, Int_t, Double_t fProbCut = 0.);
  28. Bool_t FillEffContHists(Double_t, Double_t, Double_t, Int_t, Int_t, Double_t fProbCut = 0.);
  29. void GetDedxQA(TString);
  30. void Getm2QA(TString);
  31. void GetAmplQA(TString);
  32. void GetEffContQA(TString);
  33. MpdPidUtils::ePartType GetPartType(Int_t);
  34. private:
  35. /// private functions
  36. void Init(TString);
  37. void FillEffDenominator(Double_t, Int_t);
  38. Bool_t FillEffContHists(Double_t, Int_t, Int_t, MpdPidUtils::ePartCharge);
  39. Double_t Novosibirsk (Double_t*, Double_t*);
  40. /// variables
  41. Double_t Xlow[MpdPidUtils::nQAHists];
  42. Double_t Xhigh[MpdPidUtils::nQAHists];
  43. Double_t X[MpdPidUtils::nQAHists];
  44. TString nSigPart;
  45. map <Int_t,MpdPidUtils::ePartType> fPartTypeMap; ///< map of correspondence of PDG codes and ePartTypes
  46. map <MpdPidUtils::ePartType,MpdPidUtils::dEdXStruct_t> fEnLossMap; ///< dE/dx QA map
  47. map <MpdPidUtils::ePartType,TH2D*> fMSquaredMap; ///< m^2 QA map
  48. map <MpdPidUtils::ePartType,vecTH1Dptrs> fAbundanceMap; ///< Abundance QA map
  49. map <MpdPidUtils::ePartType,std::vector<vecTH1Dptrs>> fEffContMap; ///< PID efficiency and contamination map
  50. TH2D* fSumBetheBlochHists; ///< dE/dx VS. p histogram, all species
  51. TH2D* fChBetheBlochHists; ///< dE/dx VS. p histogram, neg char species plotted with p -> (-p)
  52. TH2D* fm2LightHist; ///< m^2 VS. p histogram for pi, K and (anti-)p
  53. TH2D* fm2HeavyHist; ///< m^2 VS. p histogram for d, t and he-3
  54. ClassDef(MpdPidQA,3);
  55. };
  56. #endif