43 number_type runNumber(1);
45 number_type timeStamp(0);
46 EventIDBase eidRun1 (runNumber, eventNumber, timeStamp);
47 ctx.setEventID (eidRun1);
50 if (writeFieldMapHandle.
isValid()) {
51 ATH_MSG_DEBUG(
"CondHandle " << writeFieldMapHandle.
fullKey() <<
" is already valid.. In theory this should not be called, but may happen if multiple concurrent events are being processed out of order.");
52 return StatusCode::SUCCESS;
57 auto writeFieldsCdo(std::make_unique<ITkPixFieldMaps>());
59 const EventIDBase start{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, 0,
60 0, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
61 const EventIDBase stop {EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, EventIDBase::UNDEFNUM-1,
62 EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
64 EventIDRange rangeW{start, stop};
67 std::vector<PixelHistoConverter> ramoPotentialMap;
68 std::vector<PixelHistoConverter> lorentzMap_e;
69 std::vector<PixelHistoConverter> lorentzMap_h;
70 std::vector<PixelHistoConverter> distanceMap_e;
71 std::vector<PixelHistoConverter> distanceMap_h;
75 std::unique_ptr<TFile> mapsFile(TFile::Open(fullPath.c_str(),
"READ"));
78 return StatusCode::FAILURE;
82 auto ramoPotentialMap_hold = readRootObject<TH3F>(*mapsFile,
"hramomap1");
83 if (!ramoPotentialMap_hold) {
84 ramoPotentialMap_hold = readRootObject<TH3F>(*mapsFile,
"ramo3d");
86 if (!ramoPotentialMap_hold) {
87 ATH_MSG_FATAL(
"Did not find a Ramo potential map and an approximate form is available yet. Exit...");
88 return StatusCode::FAILURE;
91 ramoPotentialMap_hold->SetDirectory(
nullptr);
92 auto lorentzMap_e_hold = readRootObject<TH2F>(*mapsFile,
"lorentz_map_e");
93 auto lorentzMap_h_hold = readRootObject<TH2F>(*mapsFile,
"lorentz_map_h");
94 auto distanceMap_e_hold = readRootObject<TH2F>(*mapsFile,
"edistance");
95 auto distanceMap_h_hold = readRootObject<TH2F>(*mapsFile,
"hdistance");
97 if (!lorentzMap_e_hold || !lorentzMap_h_hold || !distanceMap_e_hold || !distanceMap_h_hold) {
99 return StatusCode::FAILURE;
103 ramoPotentialMap.emplace_back();
104 ATH_CHECK(ramoPotentialMap.back().setHisto3D(ramoPotentialMap_hold.get()));
105 lorentzMap_e.emplace_back();
106 lorentzMap_h.emplace_back();
107 distanceMap_e.emplace_back();
108 distanceMap_h.emplace_back();
109 ATH_CHECK(lorentzMap_e.back().setHisto2D(lorentzMap_e_hold.get()));
110 ATH_CHECK(lorentzMap_h.back().setHisto2D(lorentzMap_h_hold.get()));
111 ATH_CHECK(distanceMap_e.back().setHisto2D(distanceMap_e_hold.get()));
112 ATH_CHECK(distanceMap_h.back().setHisto2D(distanceMap_h_hold.get()));
116 writeFieldsCdo -> setLorentzMap_e(std::move(lorentzMap_e));
117 writeFieldsCdo -> setLorentzMap_h(std::move(lorentzMap_h));
118 writeFieldsCdo -> setDistanceMap_e(std::move(distanceMap_e));
119 writeFieldsCdo -> setDistanceMap_h(std::move(distanceMap_h));
120 writeFieldsCdo -> setRamoPotentialMap(std::move(ramoPotentialMap));
122 if (rangeW.stop().isValid() && rangeW.start()>rangeW.stop()) {
124 return StatusCode::FAILURE;
126 if (writeFieldMapHandle.
record(rangeW, std::move(writeFieldsCdo)).isFailure()) {
127 ATH_MSG_FATAL(
"Could not record ITkPixFieldMaps " << writeFieldMapHandle.
key() <<
" with EventRange " << rangeW <<
" into Conditions Store");
128 return StatusCode::FAILURE;
130 ATH_MSG_INFO(
"recorded new CDO " << writeFieldMapHandle.
key() <<
" with range " << rangeW <<
" into Conditions Store");
132 return StatusCode::SUCCESS;