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

#include <PndEmcWaveformWriteoutBuffer.h>

Inheritance diagram for PndEmcWaveformWriteoutBuffer:

Public Member Functions

 PndEmcWaveformWriteoutBuffer ()
 
 PndEmcWaveformWriteoutBuffer (TString branchName, TString folderName, Bool_t persistance)
 
void AddNewDataToTClonesArray (FairTimeStamp *)
 
virtual ~PndEmcWaveformWriteoutBuffer ()
 
virtual double FindTimeForData (FairTimeStamp *data)
 
virtual void FillDataMap (FairTimeStamp *data, double activeTime)
 
virtual void EraseDataFromDataMap (FairTimeStamp *data)
 
virtual void SaveToTree (bool flag)
 
virtual void Write ()
 
virtual std::vector< std::pair
< double, FairTimeStamp * > > 
Modify (std::pair< double, FairTimeStamp * > oldData, std::pair< double, FairTimeStamp * > newData)
 

Protected Member Functions

void WriteToFile (PndEmcWaveform *theWaveform)
 
 ClassDef (PndEmcWaveformWriteoutBuffer, 1)
 

Protected Attributes

std::map< PndEmcWaveform, double > fData_map
 
Bool_t fSaveToFile
 
TFile * fWave
 
TTree * tWave
 
Int_t fMod
 
Double_t fEnergy
 
Double_t fPeak
 
Int_t fXcor
 
Int_t fYcor
 
Int_t fIdx
 
Int_t fDetID
 
Double_t fDiffTime
 
Double_t fOverlap
 
Int_t fPileupCount
 

Detailed Description

Definition at line 14 of file PndEmcWaveformWriteoutBuffer.h.

Constructor & Destructor Documentation

PndEmcWaveformWriteoutBuffer::PndEmcWaveformWriteoutBuffer ( )

Definition at line 15 of file PndEmcWaveformWriteoutBuffer.cxx.

15  :FairWriteoutBuffer() {
16 }
PndEmcWaveformWriteoutBuffer::PndEmcWaveformWriteoutBuffer ( TString  branchName,
TString  folderName,
Bool_t  persistance 
)

Definition at line 19 of file PndEmcWaveformWriteoutBuffer.cxx.

19  : FairWriteoutBuffer(branchName, "PndEmcWaveform", folderName, persistance), fSaveToFile(false)
20 {
21 }
PndEmcWaveformWriteoutBuffer::~PndEmcWaveformWriteoutBuffer ( )
virtual

Definition at line 40 of file PndEmcWaveformWriteoutBuffer.cxx.

40  {
41 }

Member Function Documentation

void PndEmcWaveformWriteoutBuffer::AddNewDataToTClonesArray ( FairTimeStamp *  data)

Definition at line 52 of file PndEmcWaveformWriteoutBuffer.cxx.

References fVerbose.

53 {
54  FairRootManager* ioman = FairRootManager::Instance();
55  TClonesArray* myArray = ioman->GetTClonesArray(fBranchName);
56  if (fVerbose > 1) std::cout << "Data Inserted: " << *(PndEmcWaveform*)(data) << std::endl;
57  new ((*myArray)[myArray->GetEntries()]) PndEmcWaveform(*(PndEmcWaveform*)(data));
58 }
int fVerbose
Definition: poormantracks.C:24
represents a simulated waveform in an emc crystal
PndEmcWaveformWriteoutBuffer::ClassDef ( PndEmcWaveformWriteoutBuffer  ,
 
)
protected
void PndEmcWaveformWriteoutBuffer::EraseDataFromDataMap ( FairTimeStamp *  data)
virtual

Definition at line 76 of file PndEmcWaveformWriteoutBuffer.cxx.

References fData_map.

77 {
78  PndEmcWaveform& myData = * ((PndEmcWaveform*)data) ;
79  if (fData_map.find(myData) != fData_map.end())
80  fData_map.erase(fData_map.find(myData));
81 }
std::map< PndEmcWaveform, double > fData_map
represents a simulated waveform in an emc crystal
void PndEmcWaveformWriteoutBuffer::FillDataMap ( FairTimeStamp *  data,
double  activeTime 
)
virtual

Definition at line 71 of file PndEmcWaveformWriteoutBuffer.cxx.

References fData_map.

72 {
73  PndEmcWaveform& myData = * ((PndEmcWaveform*)data);
74  fData_map.insert(std::pair<PndEmcWaveform,double>(myData, activeTime));
75 }
std::map< PndEmcWaveform, double > fData_map
represents a simulated waveform in an emc crystal
double PndEmcWaveformWriteoutBuffer::FindTimeForData ( FairTimeStamp *  data)
virtual

Definition at line 60 of file PndEmcWaveformWriteoutBuffer.cxx.

References fData_map.

61 {
62  std::map<PndEmcWaveform, double>::iterator it;
63  //std::map<long, double>::iterator it;
64  PndEmcWaveform& myData = *((PndEmcWaveform*)data);
65  it = fData_map.find(myData);
66  if (it == fData_map.end())
67  return -1;
68  else
69  return it->second;
70 }
std::map< PndEmcWaveform, double > fData_map
represents a simulated waveform in an emc crystal
std::vector< std::pair< double, FairTimeStamp * > > PndEmcWaveformWriteoutBuffer::Modify ( std::pair< double, FairTimeStamp * >  oldData,
std::pair< double, FairTimeStamp * >  newData 
)
virtual

Definition at line 82 of file PndEmcWaveformWriteoutBuffer.cxx.

References fDetID, fDiffTime, fMod, fOverlap, fPileupCount, fSaveToFile, fVerbose, fXcor, fYcor, PndEmcWaveform::GetActiveTime(), PndEmcWaveform::GetDetectorId(), PndEmcWaveform::GetModule(), PndEmcWaveform::GetPileupCount(), PndEmcWaveform::GetTCI(), tWave, WriteToFile(), PndEmcTwoCoordIndex::XCoord(), and PndEmcTwoCoordIndex::YCoord().

84 {
85  assert(oldData.second);
86  assert(newData.second);
87 
88  std::vector<std::pair<double, FairTimeStamp*> > result;
89  std::pair<double, FairTimeStamp*> singleResult;
90  /*if (newData.first > 0)
91  singleResult.first += newData.first;*/
92 
93  PndEmcWaveform* oldWave = (PndEmcWaveform*) (oldData.second);
94  PndEmcWaveform* newWave = (PndEmcWaveform*) (newData.second);
95  //(*newWave) += (*oldWave);
96  if (fVerbose>1) {
97  cout<<"PndEmcWaveformWriteoutBuffer::Modify called #"<<oldWave->GetDetectorId()<<", #"<<newWave->GetDetectorId()<<endl;
98  }
99 
100  if(oldWave->GetTimeStamp() < newWave->GetTimeStamp()){
101  (*oldWave) += (*newWave);
102  singleResult.second = oldData.second;
103  singleResult.first = oldWave->GetActiveTime();
104 
105 
106  if(fSaveToFile){
107  //fEnergy = theHit->GetEnergy();
108  //fPeak = theWaveform->Max();
109  fMod = oldWave->GetModule();
110  fDetID = oldWave->GetDetectorId();
111  fDiffTime = newWave->GetTimeStamp() - oldWave->GetTimeStamp() ;
112  fOverlap = oldWave->GetActiveTime() - newWave->GetTimeStamp();
113  PndEmcTwoCoordIndex* tci = oldWave->GetTCI();
114  fXcor = tci->XCoord();
115  fYcor = tci->YCoord();
116  fPileupCount = oldWave->GetPileupCount();
117  //fIdx = tci->Index();
118  tWave->Fill();
119  if(fPileupCount >= 1)
120  WriteToFile(oldWave);
121  }
122  }else{
123  (*newWave) += (*oldWave);
124  singleResult.second = newData.second;
125  singleResult.first = newWave->GetActiveTime();
126 
127  if(fSaveToFile){
128  fMod = newWave->GetModule();
129  fDetID = newWave->GetDetectorId();
130  fDiffTime = oldWave->GetTimeStamp() - newWave->GetTimeStamp() ;
131  fOverlap = newWave->GetActiveTime() - oldWave->GetTimeStamp();
132  PndEmcTwoCoordIndex* tci = newWave->GetTCI();
133  fXcor = tci->XCoord();
134  fYcor = tci->YCoord();
135  fPileupCount = newWave->GetPileupCount();
136  //fIdx = tci->Index();
137  tWave->Fill();
138  if(fPileupCount >= 1)
139  WriteToFile(newWave);
140  }
141  }
142 
143 
144  if (fVerbose > 0){
145  //if( CntMap[oldWave->GetDetectorId()] ++ >= 2)
146  // std::cout<<"DetectorID #"<<oldWave->GetDetectorId()<<" has "<<CntMap[oldWave->GetDetectorId()]<<" added"<<std::endl;
147  //std::cout << "Modify PndEmcWaveform at DetectorID# "<<oldWave->GetDetectorId()<<", #"<<newWave->GetDetectorId() << std::endl;
148  std::cout << "OldData: " << oldData.first << " : " << oldData.second << " NewData: " << newData.first << " : " << newData.second << std::endl;
149  std::cout << "Resulting Data: " << singleResult.first << " : " << singleResult.second << std::endl;
150  }
151 
152  result.push_back(singleResult);
153  //FillDataMap(singleResult.second, singleResult.first);
154 
155  return result;
156 
157 }
int fVerbose
Definition: poormantracks.C:24
Double_t GetActiveTime() const
stores crystal index coordinates (x,y) or (theta,phi)
void WriteToFile(PndEmcWaveform *theWaveform)
PndEmcTwoCoordIndex * GetTCI() const
long GetDetectorId() const
represents a simulated waveform in an emc crystal
Int_t GetPileupCount() const
Short_t GetModule() const
void PndEmcWaveformWriteoutBuffer::SaveToTree ( bool  flag)
virtual

Definition at line 22 of file PndEmcWaveformWriteoutBuffer.cxx.

References fDetID, fDiffTime, fEnergy, fMod, fOverlap, fPeak, fPileupCount, fSaveToFile, fWave, fXcor, fYcor, and tWave.

Referenced by PndEmcHitsToWaveform::Init().

22  {
23  fSaveToFile = flag;
24  if(fSaveToFile){
25  fWave = new TFile("PndEmcWaveformWriteoutBuffer.root", "RECREATE");
26  tWave = new TTree("wave","wave");
27  tWave->Branch("e" ,&fEnergy ,"e/D");
28  tWave->Branch("peak" ,&fPeak ,"peak/D");
29  tWave->Branch("mod" ,&fMod ,"mod/I");
30  tWave->Branch("xcor" ,&fXcor ,"xcor/I");
31  tWave->Branch("ycor" ,&fYcor ,"ycor/I");
32  //tWave->Branch("idx" ,&fIdx ,"idx/I");
33  tWave->Branch("detid" ,&fDetID ,"detid/I");
34  tWave->Branch("dt" , &fDiffTime,"dt/D");
35  tWave->Branch("overlapt" , &fOverlap,"overlapt/D");
36  tWave->Branch("wpc" , &fPileupCount,"wpc/I");
37  }
38 }
void PndEmcWaveformWriteoutBuffer::Write ( )
virtual

Definition at line 42 of file PndEmcWaveformWriteoutBuffer.cxx.

References fSaveToFile, fWave, and tWave.

Referenced by PndEmcHitsToWaveform::FinishTask().

42  {
43  if(fSaveToFile){
44  TFile* oldFile = gFile;
45  gFile = fWave;
46  gFile->cd();
47  tWave->Write();
48  gFile = oldFile;
49  }
50 }
void PndEmcWaveformWriteoutBuffer::WriteToFile ( PndEmcWaveform theWaveform)
protected

Definition at line 158 of file PndEmcWaveformWriteoutBuffer.cxx.

References fWave, PndEmcWaveform::GetDetectorId(), PndEmcWaveform::GetEvtList(), i, name, PndEmcWaveform::ToTGraph(), and TString.

Referenced by Modify().

159 {
160  TGraphErrors* gr = theWaveform->ToTGraph();
161  TString name("evt");
162  Int_t evtNo = FairRunAna::Instance()->GetEventHeader()->GetMCEntryNumber();
163  name += evtNo;
164  name += "_e";
165  std::vector<Int_t> evtList = theWaveform->GetEvtList();
166  for(size_t i=0;i<evtList.size();++i){
167  name += evtList[i];
168  name += "_";
169  }
170  name += theWaveform->GetDetectorId();
171  gr->SetName(name);
172  gr->SetTitle(name);
173  TFile* oldFile = gFile;
174  gFile = fWave;
175  gFile->cd();
176  gr->Write();
177  oldFile->cd();
178  delete gr;
179 }
Int_t i
Definition: run_full.C:25
const std::vector< Int_t > & GetEvtList() const
long GetDetectorId() const
TString name
TGraphErrors * ToTGraph() const

Member Data Documentation

std::map<PndEmcWaveform, double> PndEmcWaveformWriteoutBuffer::fData_map
protected
Int_t PndEmcWaveformWriteoutBuffer::fDetID
protected

Definition at line 47 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), and SaveToTree().

Double_t PndEmcWaveformWriteoutBuffer::fDiffTime
protected

Definition at line 48 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), and SaveToTree().

Double_t PndEmcWaveformWriteoutBuffer::fEnergy
protected

Definition at line 42 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by SaveToTree().

Int_t PndEmcWaveformWriteoutBuffer::fIdx
protected

Definition at line 46 of file PndEmcWaveformWriteoutBuffer.h.

Int_t PndEmcWaveformWriteoutBuffer::fMod
protected

Definition at line 41 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), and SaveToTree().

Double_t PndEmcWaveformWriteoutBuffer::fOverlap
protected

Definition at line 49 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), and SaveToTree().

Double_t PndEmcWaveformWriteoutBuffer::fPeak
protected

Definition at line 43 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by SaveToTree().

Int_t PndEmcWaveformWriteoutBuffer::fPileupCount
protected

Definition at line 50 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), and SaveToTree().

Bool_t PndEmcWaveformWriteoutBuffer::fSaveToFile
protected

Definition at line 38 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), SaveToTree(), and Write().

TFile* PndEmcWaveformWriteoutBuffer::fWave
protected

Definition at line 39 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by SaveToTree(), Write(), and WriteToFile().

Int_t PndEmcWaveformWriteoutBuffer::fXcor
protected

Definition at line 44 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), and SaveToTree().

Int_t PndEmcWaveformWriteoutBuffer::fYcor
protected

Definition at line 45 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), and SaveToTree().

TTree* PndEmcWaveformWriteoutBuffer::tWave
protected

Definition at line 40 of file PndEmcWaveformWriteoutBuffer.h.

Referenced by Modify(), SaveToTree(), and Write().


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