12 #include "GaudiKernel/ThreadLocalContext.h"
45 return StatusCode::SUCCESS ;
51 if(
m_done)
return StatusCode::SUCCESS;
55 const EventContext& ctx = Gaudi::Hive::currentContext();
64 outfit->Add(
s.c_str());
76 Float_t ShapeDer[2000];
80 outfit->SetBranchAddress(
"channelId", &
channelId);
81 outfit->SetBranchAddress(
"FT", &
FT);
82 outfit->SetBranchAddress(
"slot", &slot);
83 outfit->SetBranchAddress(
"channel", &
channel);
84 outfit->SetBranchAddress(
"detector", &
det);
86 outfit->SetBranchAddress(
"PhaseTime", &phaseTime);
87 outfit->SetBranchAddress(
"Phase", &
phase);
88 outfit->SetBranchAddress(
"timeOffset", &timeOffset);
90 outfit->SetBranchAddress(
"nSamples", &
nsamples);
91 outfit->SetBranchAddress(
"Gain", &
gain);
92 outfit->SetBranchAddress(
"Shape", Shape);
93 outfit->SetBranchAddress(
"ShapeDer", ShapeDer);
95 Float_t timeBinWidth=-1, prevTime=-1, timeOff=-1;
99 std::unique_ptr<LArShapeComplete> larShapeComplete;
100 std::unique_ptr<LArShape32MC> larShapeMC;
103 larShapeComplete = std::make_unique<LArShapeComplete>();
107 larShapeMC = std::make_unique<LArShape32MC>();
112 std::vector<float> shapemc;
113 std::vector<float> shape_dermc;
114 typedef std::vector<std::vector<float> > wave2d;
115 std::map<std::pair<unsigned int,int>, wave2d> shape;
116 std::map<std::pair<unsigned int,int>, wave2d> shape_der;
119 Long64_t
nentries = outfit->GetEntries();
120 for ( Long64_t iev = 0; iev <
nentries; ++iev )
122 outfit->GetEvent(iev);
155 ATH_MSG_ERROR (
" Too many points specified vs the expected content of the ntuple ! " );
161 if(timeBinWidth < 0) {
166 if(abs(
phase-prevPhase) == 1) {
167 timeBinWidth=std::fabs(phaseTime - prevTime);
172 if(timeOff < 0) timeOff=timeOffset;
175 if(shape[std::make_pair(hwid,
gain)].
empty()) shape[std::make_pair(hwid,
gain)].reserve(50);
176 if(shape_der[std::make_pair(hwid,
gain)].
empty()) shape_der[std::make_pair(hwid,
gain)].reserve(50);
180 shape_der[std::make_pair(hwid,
gain)][
phase][
i]=0.;}
184 for(
int i=0;
i<
nsamples; ++
i) {shapemc[
i]=0.; shape_dermc[
i]=0.;}
186 unsigned int skipped = 0;
189 for (
unsigned int i = 0;
i <
limit;
i++ ) {
207 ATH_MSG_INFO(
"Storing shape with length: " << shapemc.size() );
212 larShapeMC->
set(
id,
gain, shapemc, shape_dermc);
221 std::map<std::pair<unsigned int,int>, wave2d>
::iterator ibeg = shape.begin();
222 std::map<std::pair<unsigned int,int>, wave2d>
::iterator iend = shape.end();
223 for(;ibeg != iend; ++ibeg) {
224 larShapeComplete->
set(
HWIdentifier((ibeg->first).first),(ibeg->first).second,
225 ibeg->second, shape_der[std::make_pair((ibeg->first).first, (ibeg->first).second)],
226 timeOff,timeBinWidth);
235 return StatusCode::SUCCESS;