FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
PndEmcWaveformBuffer Class Reference

buffer for waveforms, used by PndEmcFWEndcapTimebasedWaveforms More...

#include <PndEmcWaveformBuffer.h>

Inheritance diagram for PndEmcWaveformBuffer:

Public Member Functions

 PndEmcWaveformBuffer ()
 
 PndEmcWaveformBuffer (TString branchName, TString className, TString folderName, Bool_t persistance)
 
virtual ~PndEmcWaveformBuffer ()
 
virtual void AddNewDataToTClonesArray (FairTimeStamp *)
 
virtual double FindTimeForData (FairTimeStamp *data)
 
virtual void FillDataMap (FairTimeStamp *data, double activeTime)
 
virtual void EraseDataFromDataMap (FairTimeStamp *data)
 
virtual void DeleteOldData ()
 
virtual void StoreWaveformData (TString branchName, TString folderName, bool persistance)
 
virtual void FillNewData (PndEmcWaveformData *)
 

Protected Member Functions

std::vector< std::pair< double,
FairTimeStamp * > > 
Modify (std::pair< double, FairTimeStamp * > oldData, std::pair< double, FairTimeStamp * > newData)
 
 ClassDef (PndEmcWaveformBuffer, 0)
 

Protected Attributes

std::map< PndEmcWaveformData,
double > 
fData_map
 
bool fStoreWaveformData
 
TClonesArray * fWfDataArray
 
TString fWfDataBranchName
 

Private Member Functions

 PndEmcWaveformBuffer (const PndEmcWaveformBuffer &)
 
PndEmcWaveformBufferoperator= (const PndEmcWaveformBuffer &)
 

Detailed Description

buffer for waveforms, used by PndEmcFWEndcapTimebasedWaveforms

Author
Ph. Mahlberg mahlb.nosp@m.erg@.nosp@m.hiskp.nosp@m..uni.nosp@m.-bonn.nosp@m..de

Definition at line 20 of file PndEmcWaveformBuffer.h.

Constructor & Destructor Documentation

PndEmcWaveformBuffer::PndEmcWaveformBuffer ( )

Definition at line 19 of file PndEmcWaveformBuffer.cxx.

19  :FairWriteoutBuffer(), fStoreWaveformData(kFALSE), fWfDataArray(NULL) {
20 }
PndEmcWaveformBuffer::PndEmcWaveformBuffer ( TString  branchName,
TString  className,
TString  folderName,
Bool_t  persistance 
)

Definition at line 23 of file PndEmcWaveformBuffer.cxx.

23  : FairWriteoutBuffer(branchName, className, folderName, persistance), fStoreWaveformData(kFALSE), fWfDataArray(NULL) {
24 }
PndEmcWaveformBuffer::~PndEmcWaveformBuffer ( )
virtual

Definition at line 27 of file PndEmcWaveformBuffer.cxx.

27  {
28 }
PndEmcWaveformBuffer::PndEmcWaveformBuffer ( const PndEmcWaveformBuffer )
private

Member Function Documentation

void PndEmcWaveformBuffer::AddNewDataToTClonesArray ( FairTimeStamp *  data)
virtual

Definition at line 62 of file PndEmcWaveformBuffer.cxx.

References fStoreWaveformData, fVerbose, fWfDataArray, fWfDataBranchName, PndEmcWaveformData::GetWaveformSimulator(), and PndEmcAbsWaveformSimulator::Simulate().

62  {
63 
64  FairRootManager* ioman = FairRootManager::Instance();
65  TClonesArray* myArray = ioman->GetTClonesArray(fBranchName);
66 
67  PndEmcWaveformData* wfData = dynamic_cast<PndEmcWaveformData*>(data);
69  wfData->SetEntryNr(FairLink(-1,ioman->GetEntryNr(), fWfDataBranchName, fWfDataArray->GetEntries()));
70  PndEmcWaveform* wave = wfData->GetWaveformSimulator()->Simulate(wfData, myArray);
71 
72  if (fVerbose > 1) {
73  if(wave) {
74  std::cout << "Data Inserted: " << *wave << std::endl;
75  } else {
76  std::cout << "-E in PndEmcWaveformBuffer::AddNewDataToTClonesArray" <<std::endl;
77  }
78  }
79 
80  if(fStoreWaveformData) {
81  new((*fWfDataArray)[fWfDataArray->GetEntries()]) PndEmcWaveformData(*wfData);
82  }
83 }
int fVerbose
Definition: poormantracks.C:24
virtual PndEmcWaveform * Simulate(PndEmcWaveformData *wfData, TClonesArray *arrayToStore=NULL)
PndEmcAbsWaveformSimulator * GetWaveformSimulator()
represents a simulated waveform in an emc crystal
represents a simulated waveform in an emc crystal, used by PndEmcFWEndcapTimebasedWaveforms ...
PndEmcWaveformBuffer::ClassDef ( PndEmcWaveformBuffer  ,
 
)
protected
void PndEmcWaveformBuffer::DeleteOldData ( )
virtual

Definition at line 122 of file PndEmcWaveformBuffer.cxx.

References fStoreWaveformData, and fWfDataArray.

122  {
123  FairWriteoutBuffer::DeleteOldData();
124  if(fStoreWaveformData) {
125  fWfDataArray->Delete();
126  }
127 }
void PndEmcWaveformBuffer::EraseDataFromDataMap ( FairTimeStamp *  data)
virtual

Definition at line 130 of file PndEmcWaveformBuffer.cxx.

References fData_map.

130  {
131  PndEmcWaveformData myData = *(PndEmcWaveformData*)data;
132  if (fData_map.find(myData) != fData_map.end())
133  fData_map.erase(fData_map.find(myData));
134 }
std::map< PndEmcWaveformData, double > fData_map
represents a simulated waveform in an emc crystal, used by PndEmcFWEndcapTimebasedWaveforms ...
void PndEmcWaveformBuffer::FillDataMap ( FairTimeStamp *  data,
double  activeTime 
)
virtual

Definition at line 116 of file PndEmcWaveformBuffer.cxx.

References fData_map.

116  {
117  PndEmcWaveformData myData = *(PndEmcWaveformData*)data;
118  fData_map[myData] = activeTime;
119 }
std::map< PndEmcWaveformData, double > fData_map
represents a simulated waveform in an emc crystal, used by PndEmcFWEndcapTimebasedWaveforms ...
void PndEmcWaveformBuffer::FillNewData ( PndEmcWaveformData wfData)
virtual

Definition at line 30 of file PndEmcWaveformBuffer.cxx.

References Double_t, PndEmcAbsWaveformSimulator::GetAbsoluteTimeInterval(), PndEmcAbsWaveformSimulator::GetTimeBeforeFirstHit(), PndEmcWaveformData::GetWaveformSimulator(), and PndEmcWaveformData::SetTimeOfLastSample().

Referenced by PndEmcFWEndcapTimebasedWaveforms::Exec().

30  {
31 
32  FairRootManager* ioman = FairRootManager::Instance();
33 
34  //calculate start and active time for timebased simulation framework
35  //Only times greater or equal than the current EventTime are accepted by the framework, but the absolute time of the first sample might been set to lower times. To allow this, the timebased simulation time parameters are increased as needed.
36  Double_t startTime, activeTime;
37  wfData->GetWaveformSimulator()->GetAbsoluteTimeInterval(wfData, startTime, activeTime);
38  wfData->SetTimeStamp(startTime);
39  wfData->SetTimeOfLastSample(activeTime);
40 
41 // std::cout << "-I- PndEmcWaveformBuffer::FillNewData startTime: " << startTime << " TimeBeforeFirstHit " <<
42 // wfData->GetWaveformSimulator()->GetTimeBeforeFirstHit(wfData) << std::endl;
43 
44  startTime = startTime<ioman->GetEventTime() ? ioman->GetEventTime() : startTime; //shifting startTime towards greater times
45  activeTime += wfData->GetWaveformSimulator()->GetTimeBeforeFirstHit(wfData); // maximal shift in previous step is wfSimulator->GetTimeBeforeFirstHit(), avoid overlapping of generated waves in absolute time domain
46 
47  FairWriteoutBuffer::FillNewData(wfData, startTime, activeTime);
48 
49 }
void SetTimeOfLastSample(Double_t time)
virtual Double_t GetTimeBeforeFirstHit(PndEmcWaveformData *)
Double_t
PndEmcAbsWaveformSimulator * GetWaveformSimulator()
virtual void GetAbsoluteTimeInterval(PndEmcWaveformData *wfData, Double_t &startTime, Double_t &activeTime)=0
double PndEmcWaveformBuffer::FindTimeForData ( FairTimeStamp *  data)
virtual

Definition at line 106 of file PndEmcWaveformBuffer.cxx.

References fData_map.

106  {
107  std::map<PndEmcWaveformData, double>::iterator it;
108  PndEmcWaveformData myData = *(PndEmcWaveformData*)data;
109  it = fData_map.find(myData);
110  if (it == fData_map.end())
111  return -1;
112  else
113  return it->second;
114 }
std::map< PndEmcWaveformData, double > fData_map
represents a simulated waveform in an emc crystal, used by PndEmcFWEndcapTimebasedWaveforms ...
std::vector< std::pair< double, FairTimeStamp * > > PndEmcWaveformBuffer::Modify ( std::pair< double, FairTimeStamp * >  oldData,
std::pair< double, FairTimeStamp * >  newData 
)
protected

Definition at line 86 of file PndEmcWaveformBuffer.cxx.

References Double_t, PndEmcAbsWaveformSimulator::GetAbsoluteTimeInterval(), PndEmcAbsWaveformSimulator::GetTimeBeforeFirstHit(), PndEmcWaveformData::GetWaveformSimulator(), and PndEmcWaveformData::SetTimeOfLastSample().

86  {
87 
88  PndEmcWaveformData* oldWfData = dynamic_cast<PndEmcWaveformData*>(oldData.second);
89  PndEmcWaveformData* newWfData = dynamic_cast<PndEmcWaveformData*>(newData.second);
90 
91  (*oldWfData)+=(*newWfData);
92  delete newWfData;
93 
94  Double_t startTime, activeTime;
95  oldWfData->GetWaveformSimulator()->GetAbsoluteTimeInterval(oldWfData, startTime, activeTime);
96  oldWfData->SetTimeStamp(startTime);
97  oldWfData->SetTimeOfLastSample(activeTime);
98 
99 
100  activeTime += oldWfData->GetWaveformSimulator()->GetTimeBeforeFirstHit(oldWfData);
101 
102  return std::vector<std::pair<double, FairTimeStamp*> >(1, std::pair<double, FairTimeStamp*>(activeTime, oldWfData));
103 }
void SetTimeOfLastSample(Double_t time)
virtual Double_t GetTimeBeforeFirstHit(PndEmcWaveformData *)
Double_t
PndEmcAbsWaveformSimulator * GetWaveformSimulator()
virtual void GetAbsoluteTimeInterval(PndEmcWaveformData *wfData, Double_t &startTime, Double_t &activeTime)=0
represents a simulated waveform in an emc crystal, used by PndEmcFWEndcapTimebasedWaveforms ...
PndEmcWaveformBuffer& PndEmcWaveformBuffer::operator= ( const PndEmcWaveformBuffer )
private
void PndEmcWaveformBuffer::StoreWaveformData ( TString  branchName,
TString  folderName,
bool  persistance 
)
virtual

Definition at line 52 of file PndEmcWaveformBuffer.cxx.

References fStoreWaveformData, fWfDataArray, and fWfDataBranchName.

Referenced by PndEmcFWEndcapTimebasedWaveforms::Init().

52  {
53  FairRootManager* ioman = FairRootManager::Instance();
54  fStoreWaveformData = kTRUE;
55  fWfDataBranchName = branchName;
56  ioman->Register(branchName, "PndEmcWaveformData", folderName, persistance);
57  fWfDataArray = ioman->GetTClonesArray(branchName);
58 }

Member Data Documentation

std::map<PndEmcWaveformData, double> PndEmcWaveformBuffer::fData_map
protected

Definition at line 45 of file PndEmcWaveformBuffer.h.

Referenced by EraseDataFromDataMap(), FillDataMap(), and FindTimeForData().

bool PndEmcWaveformBuffer::fStoreWaveformData
protected
TClonesArray* PndEmcWaveformBuffer::fWfDataArray
protected
TString PndEmcWaveformBuffer::fWfDataBranchName
protected

Definition at line 52 of file PndEmcWaveformBuffer.h.

Referenced by AddNewDataToTClonesArray(), and StoreWaveformData().


The documentation for this class was generated from the following files: