MpdTofHitProducerQA.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //------------------------------------------------------------------------------------------------------------------------
  2. #ifndef __MPD_TOF_HITPRODUCER_QA_H
  3. #define __MPD_TOF_HITPRODUCER_QA_H 1
  4. #include <TList.h>
  5. #include <TString.h>
  6. #include <TVector3.h>
  7. #include <TEfficiency.h>
  8. #include <TH2D.h>
  9. #include <TH1D.h>
  10. #include <TGeoMatrix.h>
  11. //------------------------------------------------------------------------------------------------------------------------
  12. class TClonesArray;
  13. class MpdTofHitProducerQA
  14. {
  15. TList fList;
  16. TH1D *hOccup, *htR, *hDistance;
  17. TH2D *hMergedTimes, *hNeighborPair, *hXYSmeared, *hXYSmeared2,*hXYSmearedCross, *hXYSmearedCross2, *hEtaPhi, *h2Strips, *h2Detectors, *hRZ;
  18. TH2D *hHitPointPerEvent = nullptr, *hPointDistanceSame = nullptr, *hPointDistanceDiff = nullptr, *hDevHitYZOrigin = nullptr, *hDevHitXZOrigin = nullptr;
  19. TH2D *hHitPositionInsideStrip = nullptr, *hMCPositionInsideStrip = nullptr, *hPointXZOrigin = nullptr,*hPointYZOrigin = nullptr, *hHitXZOrigin = nullptr, *hHitYZOrigin = nullptr;
  20. TH2D *hXZCentralDetector = nullptr,*hYZCentralDetector = nullptr, *hXZDetector = nullptr,*hYZDetector = nullptr;
  21. TEfficiency *effHitGap2, *effHitGap13, *effCrossHit;
  22. TString fFlnm;
  23. bool fIsEndcap;
  24. const char* mangling(const char* name){ static TString nm; nm = fIsEndcap ? "LsETOF_" : "LsTOF_"; nm += name; return nm.Data();}
  25. void Add(TH1 *hist){ hist->SetDirectory(nullptr); fList.Add(hist);}
  26. void Add(TEfficiency *hist){ hist->SetDirectory(nullptr); fList.Add(hist);}
  27. public :
  28. MpdTofHitProducerQA(const char *flnm, bool isEndcap);
  29. void Finish();
  30. void FillDetectorsMap(const TVector3& A, const TVector3& B, const TVector3& C, const TVector3& D);
  31. void FillStripsMap(const TVector3& A, const TVector3& B, const TVector3& C, const TVector3& D);
  32. void FillCrossHitEfficiency(bool fired, Double_t distance, size_t gap, const TVector3& position, const TVector3& smearedPosition);
  33. void Point2HitSmearingTest(const TVector3& mcPosition, const TVector3& hitPosition);
  34. void HitGapEfficiencyTest(bool fired, Double_t distance, Int_t gap);
  35. void PointDistanceTest(const TClonesArray*);
  36. void PositionInsideStripTest(const TVector3& stripCenter, const TVector3& mcPosition, const TVector3& hitPosition);
  37. void RotationToOriginTest(const TGeoCombiTrans& matrix, const TVector3& mcPosition, const TVector3& hitPosition);
  38. void CentralDetectorTest(Int_t suid, const TVector3& hitPosition);
  39. inline void FillOccupancy(Double_t occupancy){ hOccup->Fill(occupancy);}
  40. inline void FillMergedTimes(Double_t time1, Double_t time2){ hMergedTimes->Fill(time1, time2);}
  41. inline void FillDistanceToStrip(Double_t distance) { hDistance->Fill(distance); }
  42. inline void FillNeighborPairs(Int_t suid1, Int_t suid2){ hNeighborPair->Fill(suid1, suid2);}
  43. inline void FillNPointsHits(Double_t points, Double_t hits){ hHitPointPerEvent->Fill(points, hits);}
  44. };
  45. //------------------------------------------------------------------------------------------------------------------------
  46. #endif