#include "CbmRichMCbmToTShifter.h" #include "TH1.h" #include "TH1D.h" #include "TCanvas.h" #include "TClonesArray.h" #include "TF1.h" #include "TStyle.h" #include "TEllipse.h" #include "TLine.h" #include "TMarker.h" #include "TGeoNode.h" #include "TGeoManager.h" #include "TGeoBBox.h" #include "TMath.h" #include #include "CbmRichDigi.h" #include "TLatex.h" #include "CbmDrawHist.h" #include "CbmRichGeoManager.h" #include "CbmRichPoint.h" #include "CbmRichConverter.h" #include "CbmUtils.h" #include "CbmHistManager.h" #include "CbmDigiManager.h" #include #include #include #include #include using boost::assign::list_of; CbmRichMCbmToTShifter::CbmRichMCbmToTShifter() : FairTask("CbmRichMCbmToTShifter"), fEventNum(0), fOutputDir("result_ToTOffset"), fhTotMap(), fGeneratePDFs(false), fShowTdcId(false) { std::cout << "CbmRichMCbmToTShifter::Constructor.." << std::endl; } InitStatus CbmRichMCbmToTShifter::Init() { std::cout << "CbmRichMCbmToTShifter::Init" << std::endl; FairRootManager* ioman = FairRootManager::Instance(); if (nullptr == ioman) { Fatal("CbmRichMCbmToTShifter::Init","RootManager not instantised!"); } fDigiMan = CbmDigiManager::Instance(); fDigiMan->Init(); if (! fDigiMan->IsPresent(kRich) ) { Fatal("CbmRichMCbmToTShifter::Init", "No Rich Digis!"); } return kSUCCESS; } void CbmRichMCbmToTShifter::Exec(Option_t* /*option*/) { fEventNum++; int nofDigis = fDigiMan->GetNofDigis(kRich); for (int i=0; i < nofDigis; ++i){ const CbmRichDigi* digi = fDigiMan->Get(i); TH1* h = GetTotH1(getDirichAddress(digi->GetAddress()), getDirichChannel(digi->GetAddress())); if (h != nullptr) h->Fill(digi->GetToT()); } } void CbmRichMCbmToTShifter::Finish() { std::cout<<"Drawing Hists..."<(inner.second->GetEntries()); mean_cnt++; } } if (mean_cnt != 0) mean /= mean_cnt; auto it = std::begin(fhTotMap); for (auto const &outer : fhTotMap) { int tdc = outer.first; TCanvas* c = new TCanvas(Form("fhToT_%x",outer.first),Form("fhToT_%x",outer.first), 2000 , 2000); c->Divide(6,6); if (fShowTdcId) s << "TDC 0x"<cd(1+i); TH1* h = GetTotH1(tdc, i+1); if (h != nullptr) { h->Draw(); if (GetMaxH1(h)<20 || h->GetEntries() < mean*0.1) { s<< " 0.00"; } else { s<< " "<< GetMaxH1(h)-25.00; } } } if (it == fhTotMap.begin()) { if (fGeneratePDFs) c->Print("ToTs/Tdc_all.pdf(","pdf"); s<< " \\"<< std::endl; } else if (std::next(it) == fhTotMap.end()) { if (fGeneratePDFs) c->Print("ToTs/Tdc_all.pdf)","pdf"); s<Print("ToTs/Tdc_all.pdf","pdf"); s<< " \\"<< std::endl; } ++it; } std::cout<GetNbinsX();++i){ Double_t val = h->GetBinContent(i); if (val > max) { max = val; b = i; } } return h->GetBinCenter(b); } ClassImp(CbmRichMCbmToTShifter)