FairRoot/PandaRoot
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
PndMdtHitProducer Class Reference

#include <PndMdtHitProducer.h>

Inheritance diagram for PndMdtHitProducer:

Classes

struct  PndMdtDigiLess
 

Public Member Functions

 PndMdtHitProducer ()
 
 ~PndMdtHitProducer ()
 
virtual InitStatus Init ()
 
virtual void RunTimeBased ()
 
virtual void FinishTask ()
 
virtual void Exec (Option_t *opt)
 
PndMdtHitAddHit (Int_t detID, Int_t stripID, TVector3 &pos, TVector3 &dpos, Int_t bIndex, Int_t sIndex)
 

Private Types

typedef std::vector
< std::vector< PndMdtDigi * > > 
ClustersCollection
 
typedef
ClustersCollection::iterator 
ClustersColIter
 
typedef std::vector< PndMdtDigi * > SingleCluster
 
typedef SingleCluster::iterator SingleDigiIter
 
typedef std::vector
< std::vector< PndMdtDigi * > > 
TrackletCollection
 
typedef
TrackletCollection::iterator 
TrackletColIter
 
typedef std::vector< PndMdtDigi * > Tracklet
 
typedef Tracklet::iterator TrackletDigiIter
 
typedef std::vector< PndMdtDigi * > VecDigi
 
typedef VecDigi::iterator VecDigiIter
 

Private Member Functions

virtual void Exec_old (Option_t *opt)
 
 ClassDef (PndMdtHitProducer, 1)
 

Private Attributes

TClonesArray * fBoxArray
 
TClonesArray * fStripArray
 
TClonesArray * fDigiArray
 
TClonesArray * fBoxClusterArray
 
TClonesArray * fStripClusterArray
 
TClonesArray * fHitArray
 
Int_t fNumofBoxDigis
 
Int_t fNumofStripDigis
 
Int_t fNumofHits
 
Int_t fNumofGroupedBoxDigis
 
Int_t fNumofGroupedStripDigis
 
std::map< Int_t, Int_t > fMatchMap
 
std::map< Int_t, Int_t > fBoxHitMapofLayer
 
std::map< Int_t, Int_t > fStripHitMapofLayer
 
Bool_t fTimeOrderedDigi
 
BinaryFunctor * fFunctor
 
Int_t fEventCounter
 
Double_t fTimeWindow
 

Detailed Description

Definition at line 15 of file PndMdtHitProducer.h.

Member Typedef Documentation

typedef ClustersCollection::iterator PndMdtHitProducer::ClustersColIter
private

Definition at line 72 of file PndMdtHitProducer.h.

typedef std::vector<std::vector<PndMdtDigi*> > PndMdtHitProducer::ClustersCollection
private

Definition at line 71 of file PndMdtHitProducer.h.

typedef std::vector<PndMdtDigi*> PndMdtHitProducer::SingleCluster
private

Definition at line 73 of file PndMdtHitProducer.h.

typedef SingleCluster::iterator PndMdtHitProducer::SingleDigiIter
private

Definition at line 74 of file PndMdtHitProducer.h.

typedef std::vector<PndMdtDigi*> PndMdtHitProducer::Tracklet
private

Definition at line 78 of file PndMdtHitProducer.h.

typedef TrackletCollection::iterator PndMdtHitProducer::TrackletColIter
private

Definition at line 77 of file PndMdtHitProducer.h.

typedef std::vector<std::vector<PndMdtDigi*> > PndMdtHitProducer::TrackletCollection
private

Definition at line 76 of file PndMdtHitProducer.h.

typedef Tracklet::iterator PndMdtHitProducer::TrackletDigiIter
private

Definition at line 79 of file PndMdtHitProducer.h.

typedef std::vector<PndMdtDigi*> PndMdtHitProducer::VecDigi
private

Definition at line 81 of file PndMdtHitProducer.h.

typedef VecDigi::iterator PndMdtHitProducer::VecDigiIter
private

Definition at line 82 of file PndMdtHitProducer.h.

Constructor & Destructor Documentation

PndMdtHitProducer::PndMdtHitProducer ( )

Default constructor

Definition at line 32 of file PndMdtHitProducer.cxx.

References fVerbose.

32  :
33 FairTask("MDT Hit Producer") ,fTimeOrderedDigi(kFALSE)
34 {
35  fVerbose = 0;
36  // Reset();
37 }
int fVerbose
Definition: poormantracks.C:24
PndMdtHitProducer::~PndMdtHitProducer ( )

Destructor

Definition at line 41 of file PndMdtHitProducer.cxx.

41 { }

Member Function Documentation

PndMdtHit * PndMdtHitProducer::AddHit ( Int_t  detID,
Int_t  stripID,
TVector3 &  pos,
TVector3 &  dpos,
Int_t  bIndex,
Int_t  sIndex 
)

Definition at line 378 of file PndMdtHitProducer.cxx.

References fHitArray, and fNumofHits.

Referenced by Exec(), and Exec_old().

378  {
379  // It fills the PndMdtHit category
380  ++fNumofHits;
381  TClonesArray& clref = *fHitArray;
382  Int_t size = clref.GetEntriesFast();
383  return new(clref[size]) PndMdtHit(detID, stripID, pos, dpos, bIndex, sIndex);
384 }
TVector3 pos
TClonesArray * fHitArray
PndMdtHitProducer::ClassDef ( PndMdtHitProducer  ,
 
)
private
void PndMdtHitProducer::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 114 of file PndMdtHitProducer.cxx.

References CAMath::Abs(), AddHit(), Bool_t, Double_t, fBoxArray, fBoxClusterArray, fBoxHitMapofLayer, fDigiArray, fEventCounter, fFunctor, fHitArray, fMatchMap, fNumofBoxDigis, fNumofGroupedBoxDigis, fNumofGroupedStripDigis, fNumofStripDigis, fStripArray, fStripClusterArray, fStripHitMapofLayer, fTimeOrderedDigi, fTimeWindow, fVerbose, PndMdtDigi::GetDetectorID(), PndMdtDigi::GetLayer(), PndMdtDigi::GetModule(), idx, PndMdtDigi::isWire(), PndMdtID::LayerID(), pos, PndMdtDigi::Print(), PndMdtDigi::X(), PndMdtDigi::Y(), and PndMdtDigi::Z().

115 {
116  fHitArray->Delete();
117  fBoxClusterArray->Clear();
118  fStripClusterArray->Clear();
119 
120  if(fTimeOrderedDigi){
121  fDigiArray->Clear();
122  static const double fixed_time_length = 100;//unit nano second
123  Double_t fEvtTime = FairRootManager::Instance()->GetEventTime();
124  fTimeWindow = fEvtTime + fixed_time_length;//one time interval
125  //loading in digis in a time-window
126  //fCurrentPosition = fDigiArray->GetEntriesFast();
127  if(FairRunAna::Instance()->IsTimeStamp()){
128  fDigiArray = FairRootManager::Instance()->GetData("TSMdtDigi"
129  , fFunctor
130  , fTimeWindow);
131  }
132  if(fVerbose>1){
133  cout<<"------------------------PndMdtHitProducer-------------------------------------------"<<endl;
134  cout<<"|Event No. #"<<fEventCounter<<", time-based simulation,"
135  <<fDigiArray->GetEntriesFast()<<" digis in time window ["
136  <<fEvtTime <<", "<<fTimeWindow<<"] (ns) |"<<endl;
137  if(fVerbose>=3){
138  Int_t fCurrentPosition = 0;
139  for(Int_t idigi=fCurrentPosition; idigi< fDigiArray->GetEntriesFast(); ++idigi){
140  PndMdtDigi* theDigi = (PndMdtDigi*)fDigiArray->At(idigi);
141  cout<<" ";
142  theDigi->Print();
143  std::cout<<std::endl;
144  }
145  }
146  cout<<"------------------------PndMdtHitProducer-------------------------------------------"<<endl;
147  }
148  fBoxArray->Delete();
149  //diliver digis to two queue
150  for(Int_t idigi=0; idigi < fDigiArray->GetEntriesFast(); ++ idigi){
151  PndMdtDigi* theDigi = (PndMdtDigi*) fDigiArray->At(idigi);
152  if(theDigi->isWire())
153  ( *fBoxArray)[fBoxArray->GetEntriesFast()] = theDigi;
154  else
155  ( *fStripArray)[fStripArray->GetEntriesFast()] = theDigi;
156  }
157  }
158 
159 
160 
161 
162  Int_t nBox = fBoxArray->GetEntriesFast();
163  Int_t nStrip = fStripArray->GetEntriesFast();
164  if (nBox==0 || nStrip==0) return;
165 
166  fNumofBoxDigis += nBox;
167  fNumofStripDigis += nStrip;
168 
169  ClustersCollection fStripClusters;//grouped strip digis
170  for(Int_t istrip=0; istrip < nStrip; ++ istrip)
171  {
172  PndMdtDigi* stripDigi = (PndMdtDigi*) fStripArray->At(istrip);
173  ClustersColIter cit = fStripClusters.begin();
174  ClustersColIter cend = fStripClusters.end();
175  Bool_t isFoundinClusters = kFALSE;
176  for(; cit != cend; ++cit){//loop each cluster
177  SingleCluster& aClu = *cit;
178  SingleDigiIter dit = aClu.begin();
179  SingleDigiIter dend = aClu.end();
180  Bool_t found = kFALSE;
181  for(; dit != dend; ++dit)
182  {
183  PndMdtDigi* aDigi = *dit;
184  if( abs(aDigi->GetDetectorID() - stripDigi->GetDetectorID()) == 1) //neighbour
185  {
186  found = kTRUE;
187  break;
188  }
189  }
190  if(found) {
191  isFoundinClusters = kTRUE;
192  aClu.push_back(stripDigi);
193  break;
194  }
195  }
196  if( !isFoundinClusters){
197  SingleCluster aClu;
198  aClu.push_back(stripDigi);
199  fStripClusters.push_back(aClu);
200  }
201  }
202  //box digis group
203  ClustersCollection fBoxClusters;//grouped strip digis
204  for(Int_t ibox=0; ibox < nBox; ++ ibox)
205  {
206  PndMdtDigi* boxDigi = (PndMdtDigi*) fBoxArray->At(ibox);
207  if (fVerbose>0) cout<< "pos 0, "<<ibox<<", "<<boxDigi->X()<<", "<<boxDigi->Y()<<", "<<boxDigi->Z()<<endl;
208 
209  ClustersColIter cit = fBoxClusters.begin();
210  ClustersColIter cend = fBoxClusters.end();
211  Bool_t isFoundinClusters = kFALSE;
212  for(; cit != cend; ++cit){//loop each cluster
213  SingleCluster& aClu = *cit;
214  SingleDigiIter dit = aClu.begin();
215  SingleDigiIter dend = aClu.end();
216  Bool_t found = kFALSE;
217  for(; dit != dend; ++dit){
218  PndMdtDigi* aDigi = *dit;
219  if( abs(aDigi->GetDetectorID() - boxDigi->GetDetectorID()) == 1) //neighbour
220  {
221  found = kTRUE;
222  break;
223  }
224  }
225  if(found) {
226  isFoundinClusters = kTRUE;
227  aClu.push_back(boxDigi);
228  break;
229  }
230  }
231  if( !isFoundinClusters){
232  SingleCluster aClu;
233  aClu.push_back(boxDigi);
234  fBoxClusters.push_back(aClu);
235  }
236  }
237  //
238  //std::cout<<"read "<<nStrip<<" strip digis"<<endl;
239  std::map<Int_t, Int_t> fLayerMapofBox;
240  ClustersColIter cit = fBoxClusters.begin();
241  ClustersColIter cend = fBoxClusters.end();
242  for(; cit != cend; ++ cit){
243  SingleCluster& aClu = *cit;
244  sort(aClu.begin(), aClu.end(), PndMdtDigiLess());
245  size_t idx = aClu.size()/2;
246  SingleDigiIter dit = aClu.begin();
247  while( idx -- ) ++ dit;
248  if (fVerbose>0) cout<< "dit pos 1, "<<fBoxClusterArray->GetEntriesFast()<<", "<<(*dit)->X()<<", "<<(*dit)->Y()<<", "<<(*dit)->Z()<<endl;
249  (*fBoxClusterArray)[fBoxClusterArray->GetEntriesFast()] = *dit;
250 
251  ++ fLayerMapofBox[ PndMdtID::LayerID((*dit)->GetDetectorID())];
252  }
253 
254  std::map<Int_t, Int_t> fLayerMapofStrip;
255  cit = fStripClusters.begin();
256  cend = fStripClusters.end();
257  for(; cit != cend; ++ cit){
258  SingleCluster& aClu = *cit;
259  sort(aClu.begin(), aClu.end(), PndMdtDigiLess());
260  size_t idx = aClu.size()/2;
261  SingleDigiIter dit = aClu.begin();
262  while( idx -- ) ++ dit;
263  (*fStripClusterArray)[fStripClusterArray->GetEntriesFast()] = *dit;
264  ++ fLayerMapofStrip[ PndMdtID::LayerID((*dit)->GetDetectorID())];
265  }
266 
267  std::map<Int_t, Int_t>::iterator mit = fLayerMapofBox.begin();
268  std::map<Int_t, Int_t>::iterator mend = fLayerMapofBox.end();
269  for(; mit != mend; ++mit){
270  ++ fBoxHitMapofLayer[mit->second];
271  }
272  mit = fLayerMapofStrip.begin();
273  mend = fLayerMapofStrip.end();
274  for(; mit != mend; ++mit){
275  ++ fStripHitMapofLayer[mit->second];
276  }
277  if (fVerbose>0) std::cout<<"produce "<<fStripClusterArray->GetEntriesFast()<<" digis"<<endl;
278 
279  fNumofGroupedBoxDigis += fBoxClusterArray->GetEntriesFast();
280  fNumofGroupedStripDigis += fStripClusterArray->GetEntriesFast();
281 
282  //combine box cluster and strip cluster to Hit, 2D-->3D
283  for (Int_t iBox=0; iBox<fBoxClusterArray->GetEntriesFast(); iBox++)
284  {
285  PndMdtDigi* boxDigi = (PndMdtDigi*) fBoxClusterArray->At(iBox);
286  if (fVerbose>0) cout<< "pos 2, "<<iBox<<", "<<boxDigi->X()<<", "<<boxDigi->Y()<<", "<<boxDigi->Z()<<endl;
287  Int_t numStripFound =0 ;
288  //++ nBoxDigi;
289  for (Int_t iStrip=0; iStrip<fStripClusterArray->GetEntriesFast(); iStrip++)
290  {
291  PndMdtDigi* stripDigi = (PndMdtDigi*) fStripClusterArray->At(iStrip);
292  if(PndMdtID::LayerID(boxDigi->GetDetectorID()) !=
293  PndMdtID::LayerID(stripDigi->GetDetectorID()))
294  continue;
295  //++ nMatchStripDigi1;
296  if(TMath::Abs(boxDigi->GetTimeStamp() - stripDigi->GetTimeStamp()) > 3.*14.85) continue;
297  //++ nMatchStripDigi2;
298 
299  if(boxDigi->GetModule() == 1)//barrel
300  {//take x,y
301  TVector3 pos;
302  TVector3 dpos(0.5, 0.5, 0.5);
303  pos.SetX(boxDigi->X());
304  pos.SetY(boxDigi->Y());
305  pos.SetZ(stripDigi->Z());
306  PndMdtHit* aHit = AddHit(boxDigi->GetDetectorID(), stripDigi->GetDetectorID(), pos, dpos, iBox, iStrip);
307  aHit->SetTimeStamp(boxDigi->GetTimeStamp());
308  //aHit->SetEvtNumber(boxDigi->GetEvtNumber());
309  }
310  else if(boxDigi->GetModule() == 2 && boxDigi->GetLayer() < 3)//endcap
311  {
312  TVector3 pos;
313  TVector3 dpos(0.5, 0.5, 0.5);
314  pos.SetX(boxDigi->X());
315  pos.SetZ(boxDigi->Z());
316  pos.SetY(stripDigi->Y());
317  PndMdtHit* aHit = AddHit(boxDigi->GetDetectorID(), stripDigi->GetDetectorID(), pos, dpos, iBox, iStrip);
318  aHit->SetTimeStamp(boxDigi->GetTimeStamp());
319  //aHit->SetEvtNumber(boxDigi->GetEvtNumber());
320  }else{
321  TVector3 pos;
322  TVector3 dpos(0.5, 0.5, 0.5);
323  pos.SetX(stripDigi->X());
324  pos.SetY(boxDigi->Y());
325  pos.SetZ(boxDigi->Z());
326  PndMdtHit* aHit = AddHit(boxDigi->GetDetectorID(), stripDigi->GetDetectorID(), pos, dpos, iBox, iStrip);
327  aHit->SetTimeStamp(boxDigi->GetTimeStamp());
328  //aHit->SetEvtNumber(boxDigi->GetEvtNumber());
329  }
330  ++ numStripFound;
331  }
332  ++ fMatchMap[numStripFound];
333  }
334 
335 }
TVector3 pos
int fVerbose
Definition: poormantracks.C:24
Double_t X() const
Definition: PndMdtDigi.h:35
Short_t GetLayer() const
Definition: PndMdtDigi.h:43
TClonesArray * fDigiArray
virtual void Print(const Option_t *opt=0) const
Definition: PndMdtDigi.h:23
Double_t Y() const
Definition: PndMdtDigi.h:36
BinaryFunctor * fFunctor
Double_t Z() const
Definition: PndMdtDigi.h:37
ClustersCollection::iterator ClustersColIter
std::map< Int_t, Int_t > fBoxHitMapofLayer
static Int_t LayerID(Int_t iMod, Int_t iOct, Int_t iLayer)
Definition: PndMdtID.h:16
PndMdtHit * AddHit(Int_t detID, Int_t stripID, TVector3 &pos, TVector3 &dpos, Int_t bIndex, Int_t sIndex)
Bool_t isWire() const
Definition: PndMdtDigi.h:48
TClonesArray * fStripClusterArray
static T Abs(const T &x)
Definition: PndCAMath.h:39
std::map< Int_t, Int_t > fMatchMap
int idx[MAX]
Definition: autocutx.C:38
TClonesArray * fStripArray
TClonesArray * fBoxArray
Double_t
SingleCluster::iterator SingleDigiIter
std::map< Int_t, Int_t > fStripHitMapofLayer
std::vector< std::vector< PndMdtDigi * > > ClustersCollection
std::vector< PndMdtDigi * > SingleCluster
Int_t GetDetectorID() const
Definition: PndMdtDigi.h:40
Short_t GetModule() const
Definition: PndMdtDigi.h:41
TClonesArray * fBoxClusterArray
TClonesArray * fHitArray
void PndMdtHitProducer::Exec_old ( Option_t *  opt)
privatevirtual

Definition at line 336 of file PndMdtHitProducer.cxx.

References AddHit(), fBoxArray, fHitArray, fStripArray, PndMdtDigi::GetDetectorID(), PndMdtDigi::GetLabPosition(), PndMdtDigi::GetLayerID(), PndMdtDigi::GetModule(), PndMdtDigi::GetPointList(), PndMdtDigi::GetSector(), PndMdtDigi::GetStrip(), and pos.

336  {
337 
338  // Reset output array
339  fHitArray->Delete();
340 
341  Int_t nBox = fBoxArray->GetEntriesFast();
342  Int_t nStrip = fStripArray->GetEntriesFast();
343  if (nBox==0 || nStrip==0) return;
344 
345  for (Int_t iBox=0; iBox<nBox; iBox++)
346  {
347  PndMdtDigi* boxDigi = (PndMdtDigi*) fBoxArray->At(iBox);
348  for (Int_t iStrip=0; iStrip<nStrip; iStrip++)
349  {
350  PndMdtDigi* stripDigi = (PndMdtDigi*) fStripArray->At(iStrip);
351  if ( (boxDigi->GetModule()!=stripDigi->GetModule()) ||
352  (boxDigi->GetSector()!=stripDigi->GetSector()) ||
353  (boxDigi->GetLayerID()!=stripDigi->GetLayerID()) )
354  continue;
355  vector<Int_t>vecBox = boxDigi->GetPointList();
356  vector<Int_t>vecStrip = stripDigi->GetPointList();
357  for (size_t vBox=0; vBox<(vecBox.size()); vBox++)
358  {
359  for (size_t vStrip=0; vStrip<(vecStrip.size()); vStrip++)
360  {
361  if (vecBox[vBox]==vecStrip[vStrip])
362  {
363  TVector3 pos = stripDigi->GetLabPosition();
364  TVector3 dpos(0.5,0.5,0.5);
365 
366  AddHit(boxDigi->GetDetectorID(), (Int_t)stripDigi->GetStrip(), pos, dpos, vecBox[vBox], vecStrip[vStrip] );
367  }
368  }
369  }
370  }
371  }
372 
373 
374 }
TVector3 pos
TVector3 GetLabPosition() const
Definition: PndMdtDigi.h:39
PndMdtHit * AddHit(Int_t detID, Int_t stripID, TVector3 &pos, TVector3 &dpos, Int_t bIndex, Int_t sIndex)
Short_t GetLayerID() const
Definition: PndMdtDigi.h:44
TClonesArray * fStripArray
TClonesArray * fBoxArray
const std::vector< Int_t > & GetPointList()
Definition: PndMdtDigi.h:51
Int_t GetDetectorID() const
Definition: PndMdtDigi.h:40
Short_t GetSector() const
Definition: PndMdtDigi.h:42
Short_t GetModule() const
Definition: PndMdtDigi.h:41
TClonesArray * fHitArray
Short_t GetStrip() const
Definition: PndMdtDigi.h:47
void PndMdtHitProducer::FinishTask ( )
virtual

Definition at line 386 of file PndMdtHitProducer.cxx.

References fBoxHitMapofLayer, fMatchMap, fNumofBoxDigis, fNumofGroupedBoxDigis, fNumofGroupedStripDigis, fNumofHits, fNumofStripDigis, fStripHitMapofLayer, and fVerbose.

387 {
388  if (fVerbose)
389  {
390  std::cout<<"==================================================="<<std::endl;
391  std::cout<<"PndMdtHitProducer::FinishTask"<<std::endl;
392  std::cout<<"***************************************************"<<std::endl;
393  std::cout<<"Read box digis: "<<fNumofBoxDigis<<", after group: "<<fNumofGroupedBoxDigis<<std::endl;
394  std::cout<<"Read strip digis: "<<fNumofStripDigis<<", after group: "<<fNumofGroupedStripDigis<<std::endl;
395  std::cout<<"Produce hits# "<<fNumofHits<<std::endl;
396  std::cout<<"statistics: number of strip digis matching per box digi#"<<std::endl;
397  std::map<Int_t, Int_t>::const_iterator it = fMatchMap.begin();
398  std::map<Int_t, Int_t>::const_iterator end = fMatchMap.end();
399  cout<<"Nmatch\t\t"<<"Count\t"<<endl;
400  for(; it != end; ++it){
401  cout<< it->first<<"\t\t"<<it->second<<endl;
402  }
403  std::cout<<"statistics, number of hits per layer"<<std::endl;
404  std::cout<<"================== Box ========================"<<endl;
405  std::cout<<"NumHits\t\tCount\t"<<std::endl;
406  std::map<Int_t, Int_t>::iterator mit = fBoxHitMapofLayer.begin();
407  std::map<Int_t, Int_t>::iterator mend = fBoxHitMapofLayer.end();
408  for(; mit != mend; ++mit){
409  cout<<mit->first<<"\t\t"<<mit->second<<std::endl;
410  }
411  std::cout<<"================== strip ========================"<<endl;
412  mit = fStripHitMapofLayer.begin();
413  mend = fStripHitMapofLayer.end();
414  for(; mit != mend; ++mit){
415  cout<<mit->first<<"\t\t"<<mit->second<<std::endl;
416  }
417  std::cout<<"***************************************************"<<std::endl;
418  }
419 }
int fVerbose
Definition: poormantracks.C:24
std::map< Int_t, Int_t > fBoxHitMapofLayer
std::map< Int_t, Int_t > fMatchMap
std::map< Int_t, Int_t > fStripHitMapofLayer
InitStatus PndMdtHitProducer::Init ( )
virtual

Virtual method Init

Definition at line 47 of file PndMdtHitProducer.cxx.

References fBoxArray, fBoxClusterArray, fDigiArray, fEventCounter, fFunctor, fHitArray, fNumofBoxDigis, fNumofGroupedBoxDigis, fNumofGroupedStripDigis, fNumofHits, fNumofStripDigis, fStripArray, fStripClusterArray, fTimeOrderedDigi, and fTimeWindow.

47  {
48 
49  cout << "-I- PndMdtHitProducer::Init: "
50  << "INITIALIZATION *********************" << endl;
51 
52  //FairRun* sim = FairRun::Instance(); //[R.K. 01/2017] unused variable?
53  //FairRuntimeDb* rtdb=sim->GetRuntimeDb(); //[R.K. 01/2017] unused variable?
54 
55  // Get RootManager
56  FairRootManager* ioman = FairRootManager::Instance();
57  if ( ! ioman ) {
58  cout << "-E- PndMdtHitProducer::Init: "
59  << "RootManager not instantiated!" << endl;
60  return kFATAL;
61  }
62 
63  if(fTimeOrderedDigi){
64  fDigiArray = (TClonesArray*) ioman->GetObject("MdgDigi");
65  if ( ! fDigiArray ) {
66  cout << "-W- PndMdtHitProducer::Init: "
67  << "No MdtDigi array!" << endl;
68  return kERROR;
69  }
70  fBoxArray = new TClonesArray("PndMdtDigi");
71  fStripArray = new TClonesArray("PndMdtDigi");
72  }else{
73  // Get input array
74  fBoxArray = (TClonesArray*) ioman->GetObject("MdtDigiBox");
75  if ( ! fBoxArray ) {
76  cout << "-W- PndMdtHitProducer::Init: "
77  << "No MdtDigiBox array!" << endl;
78  return kERROR;
79  }
80 
81  fStripArray = (TClonesArray*) ioman->GetObject("MdtDigiStrip");
82  if ( ! fStripArray ) {
83  cout << "-W- PndMdtHitProducer::Init: "
84  << "No MdtDigiStrip array!" << endl;
85  return kERROR;
86  }
87  }
88 
89  fBoxClusterArray = new TClonesArray("PndMdtDigi");
90  fStripClusterArray = new TClonesArray("PndMdtDigi");
91 
92  // Create and register output array
93  fHitArray = new TClonesArray("PndMdtHit");
94 
95  ioman->Register("MdtHit","Mdt",fHitArray,kTRUE);
96 
99  //nBoxDigi = nMatchStripDigi1 = nMatchStripDigi2 = 0;
100  fFunctor = new StopTime();
101  fEventCounter = 0;
102  fTimeWindow = 0.;
103 
104  cout << "-I- PndMdtHitProducer: Intialization successfull" << endl;
105 
106  return kSUCCESS;
107 
108 }
TClonesArray * fDigiArray
BinaryFunctor * fFunctor
TClonesArray * fStripClusterArray
TClonesArray * fStripArray
TClonesArray * fBoxArray
TClonesArray * fBoxClusterArray
TClonesArray * fHitArray
virtual void PndMdtHitProducer::RunTimeBased ( )
inlinevirtual

Definition at line 32 of file PndMdtHitProducer.h.

References fTimeOrderedDigi.

Referenced by digi_complete_tb().

32 { fTimeOrderedDigi = kTRUE; }

Member Data Documentation

TClonesArray* PndMdtHitProducer::fBoxArray
private

Input array of PndMdtDigi

Definition at line 46 of file PndMdtHitProducer.h.

Referenced by Exec(), Exec_old(), and Init().

TClonesArray* PndMdtHitProducer::fBoxClusterArray
private

Definition at line 50 of file PndMdtHitProducer.h.

Referenced by Exec(), and Init().

std::map<Int_t, Int_t> PndMdtHitProducer::fBoxHitMapofLayer
private

Definition at line 68 of file PndMdtHitProducer.h.

Referenced by Exec(), and FinishTask().

TClonesArray* PndMdtHitProducer::fDigiArray
private

Definition at line 48 of file PndMdtHitProducer.h.

Referenced by Exec(), and Init().

Int_t PndMdtHitProducer::fEventCounter
private

Definition at line 87 of file PndMdtHitProducer.h.

Referenced by Exec(), and Init().

BinaryFunctor* PndMdtHitProducer::fFunctor
private

Definition at line 86 of file PndMdtHitProducer.h.

Referenced by Exec(), and Init().

TClonesArray* PndMdtHitProducer::fHitArray
private

Output array of PndMdtHit

Definition at line 53 of file PndMdtHitProducer.h.

Referenced by AddHit(), Exec(), Exec_old(), and Init().

std::map<Int_t, Int_t> PndMdtHitProducer::fMatchMap
private

Definition at line 66 of file PndMdtHitProducer.h.

Referenced by Exec(), and FinishTask().

Int_t PndMdtHitProducer::fNumofBoxDigis
private

Definition at line 55 of file PndMdtHitProducer.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndMdtHitProducer::fNumofGroupedBoxDigis
private

Definition at line 58 of file PndMdtHitProducer.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndMdtHitProducer::fNumofGroupedStripDigis
private

Definition at line 59 of file PndMdtHitProducer.h.

Referenced by Exec(), FinishTask(), and Init().

Int_t PndMdtHitProducer::fNumofHits
private

Definition at line 57 of file PndMdtHitProducer.h.

Referenced by AddHit(), FinishTask(), and Init().

Int_t PndMdtHitProducer::fNumofStripDigis
private

Definition at line 56 of file PndMdtHitProducer.h.

Referenced by Exec(), FinishTask(), and Init().

TClonesArray* PndMdtHitProducer::fStripArray
private

Definition at line 47 of file PndMdtHitProducer.h.

Referenced by Exec(), Exec_old(), and Init().

TClonesArray* PndMdtHitProducer::fStripClusterArray
private

Definition at line 51 of file PndMdtHitProducer.h.

Referenced by Exec(), and Init().

std::map<Int_t, Int_t> PndMdtHitProducer::fStripHitMapofLayer
private

Definition at line 69 of file PndMdtHitProducer.h.

Referenced by Exec(), and FinishTask().

Bool_t PndMdtHitProducer::fTimeOrderedDigi
private

Definition at line 85 of file PndMdtHitProducer.h.

Referenced by Exec(), Init(), and RunTimeBased().

Double_t PndMdtHitProducer::fTimeWindow
private

Definition at line 88 of file PndMdtHitProducer.h.

Referenced by Exec(), and Init().


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