17 #include "ROOT/RVec.hxx" 
   49   return StatusCode::SUCCESS;
 
   56   std::map<std::pair<int, int>, 
int> noiseCutsMap; 
 
   57   bool useHardcodedCuts = 
false;
 
   61         useHardcodedCuts = 
true;
 
   64         if (noiseCuts.isValid()) {
 
   70             if(noiseCuts->size()==0) {
 
   71               ATH_MSG_ERROR(
"No noise cuts loaded from conditions db for event with timestamp" << ctx.eventID().time_stamp());
 
   72               return StatusCode::FAILURE;
 
   74             for (
auto itr = noiseCuts->begin(); itr != noiseCuts->end(); ++itr) {
 
   75                 if (itr->first >= 50) 
continue;
 
   76                 noiseCutsMap[std::pair(itr->first, 0)] = itr->second[
"EmPS"].data<
int>();
 
   77                 noiseCutsMap[std::pair(itr->first, 1)] = itr->second[
"EmFR"].data<
int>();
 
   78                 noiseCutsMap[std::pair(itr->first, 2)] = itr->second[
"EmMD"].data<
int>();
 
   79                 noiseCutsMap[std::pair(itr->first, 3)] = itr->second[
"EmBK"].data<
int>();
 
   80                 noiseCutsMap[std::pair(itr->first, 4)] = (itr->first >= 10 && itr->first < 40)
 
   81                                                         ? itr->second[
"Tile"].data<
int>()
 
   82                                                         : itr->second[
"HEC"].data<
int>();
 
   89   std::unique_ptr<eTowerContainer> local_eTowerContainerRaw = std::make_unique<eTowerContainer>();
 
   93   local_eTowerContainerRaw->clearContainerMap();
 
   94   local_eTowerContainerRaw->fillContainerMap();
 
  121           if(i<10 && eFexTower->em_status()) 
continue; 
 
  137           if(!useHardcodedCuts && 
counts.at(
i) <= noiseCutsMap[std::pair( 
int( (
eFexTower->
eta() + 2.525)/0.1 ), 
layer)]) 
continue;
 
  154         TFile *debugFile = 
dynamic_cast<TFile *
>(gROOT->GetListOfFiles()->FindObject(
"debug_eFexTowerMakerFromEfexTowers.root"));
 
  155         if (!debugFile) debugFile = TFile::Open(
"debug_eFexTowerMakerFromEfexTowers.root", 
"RECREATE");
 
  156         if (debugFile->GetListOfKeys()->GetEntries() < 20) {
 
  159             TH2D 
ps(
"ps", 
"ps [code];#eta;#phi", 50, -2.5, 2.5, 64, -
M_PI, 
M_PI);
 
  160             TH2D 
l1(
"l1", 
"l1 [code];#eta;#phi", 200, -2.5, 2.5, 64, -
M_PI, 
M_PI);
 
  161             TH2D 
l2(
"l2", 
"l2 [code];#eta;#phi", 200, -2.5, 2.5, 64, -
M_PI, 
M_PI);
 
  162             TH2D l3(
"l3", 
"l3 [code];#eta;#phi", 50, -2.5, 2.5, 64, -
M_PI, 
M_PI);
 
  163             TH2D had(
"had", 
"had [code~25MeV or 500MeV for tile];#eta;#phi", 50, -2.5, 2.5, 64, -
M_PI, 
M_PI);
 
  164             std::vector < TH1 * > 
hists{&
ps, &
l1, &
l2, &l3, &had};
 
  167                 if (
counts.empty()) 
continue;
 
  170                 double tEta = ((etaIndex < 0 ? 0.5 : -0.5) + etaIndex - 0.5) * 0.1; 
 
  173                     if(i<10 && eFexTower->em_status()) 
continue; 
 
  182                     if(!useHardcodedCuts && 
counts.at(
i) <= noiseCutsMap[std::pair( 
int( (
eFexTower->
eta() + 2.525)/0.1 ), 
layer)]) 
continue;
 
  190             c.SetTitle(
TString::Format(
"Run %u LB %u Event %lu", ctx.eventID().run_number(), ctx.eventID().lumi_block(),
 
  191                                        ctx.eventID().event_number()));
 
  193             TH2D tobs(
"tobs", 
"Sum [MeV];#eta;#phi", 50, -2.5, 2.5, 64, -
M_PI, 
M_PI);
 
  194             for (
size_t i = 0; 
i < 
hists.size(); 
i++) {
 
  195                 c.GetPad(
i + 1)->cd();gPad->SetGrid(1,1);
 
  196                 hists[
i]->SetStats(
false);
 
  197                 hists[
i]->SetMarkerSize(2); 
 
  198                 hists[
i]->GetXaxis()->SetRangeUser(-0.3, 0.3);
 
  199                 hists[
i]->GetYaxis()->SetRangeUser(-0.3, 0.3);
 
  200                 hists[
i]->Draw((
hists[
i]->GetNbinsX() > 50) ? 
"coltext89" : 
"coltext");
 
  201                 for (
int ii = 1; ii <= 
hists[
i]->GetNbinsX(); ii++) {
 
  202                     bool isTile = (
i==4 && std::abs(
hists[
i]->GetXaxis()->GetBinCenter(ii))<1.5);
 
  203                     for (
int jj = 1; jj <= 
hists[
i]->GetNbinsY(); jj++)
 
  204                         tobs.Fill(
hists[
i]->GetXaxis()->GetBinCenter(ii), 
hists[
i]->GetYaxis()->GetBinCenter(jj),
 
  209             tobs.SetStats(
false);
 
  211             TBox 
b(-0.3, -0.3, 0.3, 0.3);
 
  212             b.SetLineColor(kRed);
 
  215             b.SetBit(TBox::kCannotMove);
 
  216             tobs.GetListOfFunctions()->Add(
b.Clone());
 
  218                     "{ auto pad = gPad->GetCanvas()->GetPad(%lu); if( pad->GetEvent()==kButton1Down ) { double x = pad->PadtoX(pad->AbsPixeltoX(pad->GetEventX())); double y = pad->PadtoY(pad->AbsPixeltoY(pad->GetEventY())); for(int i=1;i<%lu;i++) {auto h = dynamic_cast<TH1*>(gPad->GetCanvas()->GetPad(i)->GetListOfPrimitives()->At(1)); if(h) {h->GetXaxis()->SetRangeUser(x-0.3,x+0.3);h->GetYaxis()->SetRangeUser(y-0.3,y+0.3); } } if(auto b = dynamic_cast<TBox*>(pad->FindObject(\"tobs\")->FindObject(\"TBox\"))) {b->SetX1(x-0.3);b->SetX2(x+0.3);b->SetY1(y-0.3);b->SetY2(y+0.3);} gPad->GetCanvas()->Paint(); gPad->GetCanvas()->Update(); } }",
 
  229   ATH_CHECK(eTowerContainerSG.
record(std::move(local_eTowerContainerRaw)));
 
  234   return StatusCode::SUCCESS;