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

#include <PndMvdEventMerger.h>

Public Member Functions

 PndMvdEventMerger ()
 
 PndMvdEventMerger (TString fileName, TString branchName, Int_t nEvents, Int_t nMerged)
 
virtual ~PndMvdEventMerger ()
 
TClonesArray * GetEvent (Int_t iEvent)
 
Int_t AddTClonesArray (TClonesArray *target, TClonesArray *source)
 

Private Member Functions

Int_t FillBuffer (TString fileName, TString branchName, Int_t nEvents, Int_t nMerged)
 
 ClassDef (PndMvdEventMerger, 1)
 

Private Attributes

std::vector< TClonesArray * > fBuffer
 

Detailed Description

Definition at line 11 of file PndMvdEventMerger.h.

Constructor & Destructor Documentation

PndMvdEventMerger::PndMvdEventMerger ( )

Definition at line 12 of file PndMvdEventMerger.cxx.

13 {
14  //fBuffer = 0;
15  //fBuffer = new TObjArray();
16 }
PndMvdEventMerger::PndMvdEventMerger ( TString  fileName,
TString  branchName,
Int_t  nEvents,
Int_t  nMerged 
)

Definition at line 17 of file PndMvdEventMerger.cxx.

References FillBuffer().

18 {
19 // fBuffer = new TObjArray();
20  if ( ! FillBuffer(fileName, branchName, nEvents, nMerged) )
21  cout << "-E- PndMvdEventMerger: Error in filling buffer";
22 }
Int_t FillBuffer(TString fileName, TString branchName, Int_t nEvents, Int_t nMerged)
Int_t nEvents
Definition: hit_dirc.C:11
PndMvdEventMerger::~PndMvdEventMerger ( )
virtual

Definition at line 23 of file PndMvdEventMerger.cxx.

24 {
25  //fBuffer->Delete();
26  //delete fBuffer;
27  //fBuffer = 0;
28 }

Member Function Documentation

Int_t PndMvdEventMerger::AddTClonesArray ( TClonesArray *  target,
TClonesArray *  source 
)

Definition at line 126 of file PndMvdEventMerger.cxx.

References i, and TString.

Referenced by PndMvdEventMergerTask::Exec(), and FillBuffer().

127 {
128  Int_t origSize = target->GetEntriesFast();
129  for (int i = 0; i < source->GetEntriesFast(); i++){
130  std::cout << source->GetClass()->GetName() << std::endl;
131  TString myClassName(source->GetClass()->GetName());
132  if(myClassName.Contains("PndSdsMCPoint"))
133  new ((*target)[origSize + i])PndSdsMCPoint(*(PndSdsMCPoint*)(source->At(i)));
134  else if (myClassName.Contains("PndSdsDigiPixel"))
135  new ((*target)[origSize + i])PndSdsDigiPixel(*(PndSdsDigiPixel*)(source->At(i)));
136  else if (myClassName.Contains("PndSdsDigiStrip"))
137  new ((*target)[origSize + i])PndSdsDigiStrip(*(PndSdsDigiStrip*)(source->At(i)));
138 // else if (myClassName.Contains("PndTpcPoint"))
139 // new ((*target)[origSize + i])PndTpcPoint(*(PndTpcPoint*)(source->At(i)));
140 // else if (myClassName.Contains("PndTpcCluster"))
141 // new ((*target)[origSize + i])PndTpcCluster(*(PndTpcCluster*)(source->At(i)));
142  else std::cout << "The Class: " << myClassName << " is unknown!" << std::endl;
143 
144  }
145  return target->GetEntriesFast();
146 }
Int_t i
Definition: run_full.C:25
Class for digitised strip hits.
Data class to store the digi output of a pixel module.
PndMvdEventMerger::ClassDef ( PndMvdEventMerger  ,
 
)
private
Int_t PndMvdEventMerger::FillBuffer ( TString  fileName,
TString  branchName,
Int_t  nEvents,
Int_t  nMerged 
)
private

Definition at line 56 of file PndMvdEventMerger.cxx.

References AddTClonesArray(), fBuffer, and CAMath::Min().

Referenced by PndMvdEventMerger().

57 {
58  //if ( !fBuffer)
59  // cout << "-E- Fill Buffer: No event buffer!";
60 
61  //fBuffer->Delete();
62 
63 
64  TClonesArray* pointArray= NULL;
65  TClonesArray* mergedPointsArray = NULL;
66  //TFile* saveGFile = gFile;
67 
68  TFile* bgfile = new TFile(fileName);
69  if ( !bgfile)
70  {
71  cout << "-W- CbmMvdPileupManager::FillBuffer: Background file "
72  << fileName << " could noy be opened! " << endl;
73  return 0;
74  }
75  cout << "-I- CbmMvdPileupManager::FillBuffer: Opening file " << endl;
76  cout << fileName << endl;
77 
78  TTree* bgtree = (TTree*) bgfile->Get("pndsim");
79  if ( !bgtree)
80  {
81  cout << "-W- CbmMvdPileupManager::FillBuffer: "
82  << "Could not find pndsim tree in background file " << endl;
83  return 0;
84  }
85 
86  Int_t nEventsInFile = bgtree->GetEntries();
87  cout << "-I- CbmMvdPileupManager::FillBuffer: " << nEventsInFile
88  << " events in file" << endl;
89  Int_t nBuffer = TMath::Min(nEvents, nEventsInFile);
90  cout << "-I- CbmMvdPileupManager::FillBuffer: Buffering " << nBuffer
91  << " events" << endl;
92 
93  Int_t nMergedBuffer = TMath::Min(nMerged, nEventsInFile);
94 
95 
96  bgtree->SetBranchAddress(branchName, &pointArray);
97 
98  for (Int_t iEvent=0; iEvent<nMergedBuffer; iEvent++)
99  {
100  bgtree->GetEntry(iEvent);
101  if (iEvent == 0)
102  mergedPointsArray = (TClonesArray*)pointArray->Clone();
103  else {
104  std::cout << "New size of mergedPointsArray: " << AddTClonesArray(mergedPointsArray, pointArray) << std::endl;
105  }
106  }
107 
108 
109  //fBuffer = new TObjArray(nBuffer,0);
110  for (Int_t iEvent=0; iEvent<nBuffer; iEvent++)
111  {
112  std::cout << "Adding Event: " << iEvent << " to buffer!" << std::endl;
113  std::cout << "Merged PointsArray Size: " << mergedPointsArray->GetEntriesFast() << std::endl;
114  //std::cout << fBuffer << std::endl;
115  fBuffer.push_back((TClonesArray*)mergedPointsArray);
116  }
117 
118 // delete bgtree;
119  bgfile->Close();
120 // delete bgfile;
121 // saveGFile->cd();
122 
123  return nBuffer;
124 }
static T Min(const T &x, const T &y)
Definition: PndCAMath.h:35
Int_t nEvents
Definition: hit_dirc.C:11
Int_t AddTClonesArray(TClonesArray *target, TClonesArray *source)
std::vector< TClonesArray * > fBuffer
TClonesArray * PndMvdEventMerger::GetEvent ( Int_t  iEvent)

Definition at line 30 of file PndMvdEventMerger.cxx.

References fBuffer.

Referenced by PndMvdEventMergerTask::Exec().

31 {
32  //if ( !fBuffer)
33  // std::cout << "-E- CbmMvdPileupManager::GetEvent: No event buffer!";
34 
35  if ((unsigned int)iEvent > fBuffer.size())
36  {
37  cout << "-W- CbmMvdPileupManager::GetEvent: Event " << iEvent
38  << " not present in buffer! " << endl;
39  cout << " Returning NULL pointer! "
40  << endl;
41  return NULL;
42  }
43 
44  TClonesArray* pArray = (TClonesArray*) fBuffer[iEvent];
45 
46  if ( !pArray)
47  {
48  cout << "-W CbmMvdPileupManager::GetEvent: Returning NULL pointer!"
49  << endl;
50  return NULL;
51  }
52 
53  return pArray;
54 }
std::vector< TClonesArray * > fBuffer

Member Data Documentation

std::vector<TClonesArray*> PndMvdEventMerger::fBuffer
private

Definition at line 23 of file PndMvdEventMerger.h.

Referenced by FillBuffer(), and GetEvent().


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