MpdEmcCalibParams.cxx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "MpdEmcCalibParams.h"
  2. #include "MpdEmcGeoUtils.h"
  3. #include "FairLogger.h"
  4. #include <TH2.h>
  5. #include <iostream>
  6. bool MpdEmcCalibParams::SetGain(TH2* h)
  7. {
  8. const int MAXX = 300,
  9. MAXZ = 128;
  10. if (!h) {
  11. LOG(ERROR) << "no input histogam";
  12. return false;
  13. }
  14. if (h->GetNbinsX() != MAXX || h->GetNbinsY() != MAXZ) {
  15. LOG(ERROR) << "Wrong dimentions of input histogram:" << h->GetNbinsX() << "," << h->GetNbinsY() << " instead of " << MAXX << "," << MAXZ;
  16. return false;
  17. }
  18. auto geo = MpdEmcGeoUtils::GetInstance();
  19. if (!geo) {
  20. LOG(ERROR) << "Geometry needs to be initialized";
  21. return false;
  22. }
  23. for(int tower=0; tower<NCHANNELS; tower++){
  24. int iphi,iz ;
  25. geo->DetIdToGlobalIphiIz(tower,iphi,iz) ;
  26. fGainCalib[tower] = h->GetBinContent(iphi+1, iz+1);
  27. }
  28. return true;
  29. }
  30. bool MpdEmcCalibParams::SetTimeCalib(TH2* h)
  31. {
  32. const int MAXX = 300,
  33. MAXZ = 128;
  34. if (!h) {
  35. LOG(ERROR) << "no input histogam";
  36. return false;
  37. }
  38. if (h->GetNbinsX() != MAXX || h->GetNbinsY() != MAXZ) {
  39. LOG(ERROR) << "Wrong dimentions of input histogram:" << h->GetNbinsX() << "," << h->GetNbinsY() << " instead of " << MAXX << "," << MAXZ;
  40. return false;
  41. }
  42. auto geo = MpdEmcGeoUtils::GetInstance();
  43. if (!geo) {
  44. LOG(ERROR) << "Geometry needs to be initialized";
  45. return false;
  46. }
  47. for(int tower=0; tower<NCHANNELS; tower++){
  48. int iphi,iz ;
  49. geo->DetIdToGlobalIphiIz(tower,iphi,iz) ;
  50. fTimeCalib[tower] = h->GetBinContent(iphi+1, iz+1);
  51. }
  52. return true;
  53. }