7 #include "TClonesArray.h"
50 Int_t tmpLength = 100;
51 Int_t emergencyStop = 10000000;
53 std::vector<Double_t> tmpSignal;
56 Bool_t cutoffFound = kFALSE;
63 tmpSignal.resize(tmpLength);
64 if(tmpLength>=emergencyStop) {
65 std::cout <<
"-E PndEmcFullStackedWaveformSimulator: no maximum in pulse during " << emergencyStop/tmpSamlingRate <<
" ns found. WaveformGeneration might fail." << std::endl;
69 for(Int_t iSample=0; iSample<tmpLength; iSample++) {
75 std::vector<Double_t>::const_iterator begin_constIt = tmpSignal.begin();
76 std::vector<Double_t>::const_iterator end_constIt = tmpSignal.end();
77 std::vector<Double_t>::const_iterator max_constIt = std::max_element(begin_constIt, end_constIt);
78 maxSample = std::distance(begin_constIt, max_constIt);
81 maxFound = (maxSample < tmpLength-1) ? kTRUE : kFALSE;
88 for(Int_t iSample=maxSample; iSample<tmpLength; iSample++) {
91 cutoffSample = iSample;
97 }
while(!(maxFound && cutoffFound));
103 std::vector<Double_t> signal((Int_t) TMath::Floor(totalTime*
GetSampleRate() + 0.5), 0.);
105 std::cerr <<
"catched error" << std::endl;
107 std::cerr <<
"total Time:" << totalTime << std::endl;
113 std::cerr <<
"finishing init" << std::endl;
128 const std::map<Double_t, Double_t>& hitMap = wfData->
GetHitMap();
168 for(std::map<Double_t, Double_t>::const_iterator it = wfData->
GetHitMap().begin(); it!=wfData->
GetHitMap().end(); ++it) {
191 std::vector<Double_t> signal(nSamples, 0.0);
193 for(Int_t iSample=0; iSample<nSamples; ++iSample) {
198 if(wfData->GetNLinks()) {
199 hitIndex = wfData->GetLink(0).GetIndex();
209 wave->SetLinks(wfData->GetLinksWithType(FairRootManager::Instance()->GetBranchId(
"EmcHit")));
210 wave->AddInterfaceData(wfData);
212 Double_t timeStamp = wfData->GetTimeStamp();
213 wave->SetTimeStamp(timeStamp);
233 std::vector<Double_t> signal;
241 for(;iSample<nRising; ++iSample) {
251 for(addSamples += iSample; iSample<addSamples; iSample++) {
257 wave =
new ((*arrayToStore)[arrayToStore->GetEntriesFast()])
PndEmcWaveform(trackId, detId, signal, hitIndex);
263 wave->SetTimeStamp(timestamp);
virtual double value(const double t, const double amp, const double toffset) const