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

#include <PndMdtClusterTask.h>

Inheritance diagram for PndMdtClusterTask:
PndPersistencyTask

Public Member Functions

 PndMdtClusterTask ()
 
 ~PndMdtClusterTask ()
 
virtual InitStatus Init ()
 
virtual void Exec (Option_t *opt)
 
void SetPersistence (Bool_t pers)
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Private Member Functions

Bool_t MdtMapping ()
 
void Reset ()
 
PndMdtClusterAddClusterBox (std::vector< Int_t > digiList)
 
PndMdtClusterAddClusterStrip (std::vector< Int_t > digiList)
 
 ClassDef (PndMdtClusterTask, 1)
 

Private Attributes

TClonesArray * fBoxIArray
 
TClonesArray * fStripIArray
 
TClonesArray * fBoxOArray
 
TClonesArray * fStripOArray
 
map< Int_t, Int_t > mapBox
 
map< Int_t, Int_t > mapStrip
 

Detailed Description

Definition at line 12 of file PndMdtClusterTask.h.

Constructor & Destructor Documentation

PndMdtClusterTask::PndMdtClusterTask ( )

Default constructor

Definition at line 24 of file PndMdtClusterTask.cxx.

References PndPersistencyTask::SetPersistency().

24  :
25  PndPersistencyTask("MDT Cluster Task")
26 {
27  SetPersistency(kTRUE);
28 }
void SetPersistency(Bool_t val=kTRUE)
PndMdtClusterTask::~PndMdtClusterTask ( )

Destructor

Definition at line 32 of file PndMdtClusterTask.cxx.

32 { }

Member Function Documentation

PndMdtCluster * PndMdtClusterTask::AddClusterBox ( std::vector< Int_t >  digiList)
private

Definition at line 185 of file PndMdtClusterTask.cxx.

References fBoxOArray.

Referenced by Exec().

186 {
187  // It fills the PndMdtCluster category
188  TClonesArray& clref = *fBoxOArray;
189  Int_t size = clref.GetEntriesFast();
190  return new(clref[size]) PndMdtCluster(digiList);
191 }
TClonesArray * fBoxOArray
PndMdtCluster * PndMdtClusterTask::AddClusterStrip ( std::vector< Int_t >  digiList)
private

Definition at line 196 of file PndMdtClusterTask.cxx.

References fStripOArray.

Referenced by Exec().

197 {
198  // It fills the PndMdtCluster category
199 
200  TClonesArray& clref = *fStripOArray;
201  Int_t size = clref.GetEntriesFast();
202  return new(clref[size]) PndMdtCluster(digiList);
203 }
TClonesArray * fStripOArray
PndMdtClusterTask::ClassDef ( PndMdtClusterTask  ,
 
)
private
void PndMdtClusterTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 86 of file PndMdtClusterTask.cxx.

References AddClusterBox(), AddClusterStrip(), fBoxOArray, fStripOArray, mapBox, mapStrip, and MdtMapping().

86  {
87 
88  // Reset output array
89  fBoxOArray->Delete();
90  fStripOArray->Delete();
91 
92  if (!MdtMapping()) return;
93 
94  if (mapBox.size()>0)
95  {
96  map<Int_t, Int_t>::const_iterator box_iter;
97  map<Int_t, Int_t>::const_iterator find_iter;
98  for (box_iter=mapBox.begin();box_iter!=mapBox.end();++box_iter) // layer loop
99  {
100  std::vector<Int_t> boxList; //list of digis
101  boxList.push_back((*box_iter).first);
102 
103  Int_t nn = 1;
104  while (1)
105  {
106  find_iter = mapBox.find((*box_iter).first+nn);
107  if (find_iter==mapBox.end()) break; // if no close box
108  boxList.push_back((*box_iter).first+nn);
109  mapBox.erase ((*box_iter).first+nn); // delete already used cells
110  nn++;
111  }
112  PndMdtCluster *boxClu = AddClusterBox(boxList);
113  boxClu->SetLinks(FairMultiLinkedData("MdtDigiBox", boxList));
114  }
115 
116  } // end of box loop
117 
118  if (mapStrip.size()>0)
119  {
120  map<Int_t, Int_t>::const_iterator strip_iter;
121  map<Int_t, Int_t>::const_iterator find_iter;
122  for (strip_iter=mapStrip.begin();strip_iter!=mapStrip.end();++strip_iter) // layer loop
123  {
124  std::vector<Int_t> stripList; //list of digis
125  stripList.push_back((*strip_iter).first);
126 
127  Int_t nn = 1;
128  while (1)
129  {
130  find_iter = mapStrip.find((*strip_iter).first+nn);
131  if (find_iter==mapStrip.end()) break; // if no close strip
132  stripList.push_back((*strip_iter).first+nn);
133  mapStrip.erase ((*strip_iter).first+nn); // delete already used cells
134  nn++;
135  }
136  PndMdtCluster *stripClu = AddClusterStrip(stripList);
137  stripClu->SetLinks(FairMultiLinkedData("MdtDigiStrip", stripList));
138  }
139 
140  } // end of strip loop
141 
142 }
PndMdtCluster * AddClusterStrip(std::vector< Int_t > digiList)
TClonesArray * fStripOArray
map< Int_t, Int_t > mapStrip
TClonesArray * fBoxOArray
PndMdtCluster * AddClusterBox(std::vector< Int_t > digiList)
map< Int_t, Int_t > mapBox
Bool_t PndPersistencyTask::GetPersistency ( )
inlineinherited

Definition at line 32 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency.

Referenced by PndLmdPixelHitProducerFast::GetPersistance(), PndMdtDigitization::Init(), PndMdtHitProducerIdeal::Init(), Init(), PndFtsHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::Init(), PndSttHitProducerRealFast::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::Init(), PndSttMvdGemTracking::Init(), PndMdtTrkProducer::Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), PndLmdStripClusterTask::Init(), PndEmcApdHitProducer::Init(), PndMissingPzCleanerTask::Init(), PndEmcMakeRecoHit::Init(), PndEmcMakeClusterOnline::Init(), PndTrackSmearTask::Init(), PndEmcFWEndcapTimebasedWaveforms::Init(), PndSttHitProducerIdeal::Init(), PndEmcFWEndcapDigi::Init(), PndFtsHitProducerIdeal::Init(), PndEmcMakeCluster::Init(), PndMdtPointsToWaveform::Init(), PndDiscTaskDigitization::Init(), PndEmcMakeDigi::Init(), PndSdsTimeWalkCorrTask::Init(), PndLmdPixelHitProducerFast::Init(), PndDrcHitFinder::Init(), PndRichHitFinder::Init(), PndEmcMakeCorr::Init(), PndFtofHitProducerIdeal::Init(), PndEmcHitsToWaveform::Init(), PndSciTDigiTask::Init(), PndDrcHitProducerIdeal::Init(), PndSdsHitProducerIdeal::Init(), PndSciTHitProducerIdeal::Init(), PndEmcHitProducer::Init(), PndRecoMultiKalmanTask2::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), PndEmcWaveformToDigi::Init(), PndSttMatchTracks::Init(), PndEmcWaveformToCalibratedDigi::Init(), PndTrkTracking2::Init(), PndSttFindTracks::Init(), PndEmcMultiWaveformToCalibratedDigi::Init(), PndDrcTimeDigiTask::Init(), PndRecoKalmanTask2::Init(), PndEmcExpClusterSplitter::Init(), PndSdsNoiseProducer::Init(), PndFtsHoughTrackerTask::Init(), PndEmcPhiBumpSplitter::Init(), PndSdsHybridHitProducer::Init(), PndSdsIdealRecoTask::Init(), PndRecoMultiKalmanTask::Init(), PndSdsIdealClusterTask::Init(), PndRecoKalmanTask::Init(), PndSdsStripHitProducerDif::Init(), PndSdsStripHitProducer::Init(), PndGemDigitize::Init(), PndGemFindHits::Init(), PndSdsPixelClusterTask::Init(), PndSdsStripClusterTask::Init(), PndMvdGemTrackFinderOnHits::Init(), PndBarrelTrackFinder::Init(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcMakeBump::PndEmcMakeBump(), PndUnassignedHitsTask::RegisterBranches(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndEmcMakeBump::SetStorageOfData(), and PndEmcFullDigiTask::StoreDigi().

32 { return fPersistency; }
InitStatus PndMdtClusterTask::Init ( )
virtual

Virtual method Init

Definition at line 38 of file PndMdtClusterTask.cxx.

References fBoxIArray, fBoxOArray, fStripIArray, fStripOArray, and PndPersistencyTask::GetPersistency().

38  {
39 
40  cout << "-I- PndMdtClusterTask::Init: "
41  << "INITIALIZATION *********************" << endl;
42 
43  //FairRun* sim = FairRun::Instance(); //[R.K. 01/2017] unused variable?
44  //FairRuntimeDb* rtdb=sim->GetRuntimeDb(); //[R.K. 01/2017] unused variable?
45 
46  // Get RootManager
47  FairRootManager* ioman = FairRootManager::Instance();
48  if ( ! ioman ) {
49  cout << "-E- PndMdtClusterTask::Init: "
50  << "RootManager not instantiated!" << endl;
51  return kFATAL;
52  }
53 
54  // Get input array
55  fBoxIArray = (TClonesArray*) ioman->GetObject("MdtDigiBox");
56  if ( ! fBoxIArray ) {
57  cout << "-W- PndMdtClusterTask::Init: "
58  << "No MdtDigiBox array!" << endl;
59  return kERROR;
60  }
61 
62  fStripIArray = (TClonesArray*) ioman->GetObject("MdtDigiStrip");
63  if ( ! fStripIArray ) {
64  cout << "-W- PndMdtClusterTask::Init: "
65  << "No MdtDigiStrip array!" << endl;
66  return kERROR;
67  }
68 
69 
70  // Create and register output array
71  fBoxOArray = new TClonesArray("PndMdtCluster");
72  fStripOArray = new TClonesArray("PndMdtCluster");
73  ioman->Register("MdtBoxCluster","Mdt",fBoxOArray,GetPersistency());
74  ioman->Register("MdtStripCluster","Mdt",fStripOArray,GetPersistency());
75 
76  cout << "-I- PndMdtClusterTask: Intialization successfull" << endl;
77 
78  return kSUCCESS;
79 
80 }
TClonesArray * fStripOArray
TClonesArray * fBoxOArray
TClonesArray * fStripIArray
TClonesArray * fBoxIArray
Bool_t PndMdtClusterTask::MdtMapping ( )
private

Definition at line 145 of file PndMdtClusterTask.cxx.

References fBoxIArray, fStripIArray, PndMdtDigi::GetBox(), PndMdtDigi::GetDetectorID(), PndMdtDigi::GetLayerID(), PndMdtDigi::GetModule(), PndMdtDigi::GetSector(), PndMdtDigi::GetWire(), mapBox, mapStrip, and Reset().

Referenced by Exec().

146 {
147  // Reset output array
148  Int_t nBox = fBoxIArray->GetEntriesFast();
149  Int_t nStrip = fStripIArray->GetEntriesFast();
150  if (nBox==0 || nStrip==0) return kFALSE;
151 
152  Reset();
153  PndMdtDigi *mdtDigi = NULL;
154  // Mapping BOX digis per layer
155  for (Int_t iDigi=0; iDigi<nBox; iDigi++)
156  {
157  mdtDigi = (PndMdtDigi*) fBoxIArray->At(iDigi);
158  // each box has 8 cells. let's change the detId to have continuity
159  Int_t newDetectorID = mdtDigi->GetWire() + 8*mdtDigi->GetBox() + 1000*mdtDigi->GetLayerID() + 100000*mdtDigi->GetSector() + 1000000*mdtDigi->GetModule();
160  mapBox[newDetectorID] = iDigi;
161  }
162 
163  // Mapping STRIP digis per layer
164  for (Int_t iDigi=0; iDigi<nStrip; iDigi++)
165  {
166  mdtDigi = (PndMdtDigi*) fStripIArray->At(iDigi);
167  // strips are continuous in detId
168  mapStrip[mdtDigi->GetDetectorID()] = iDigi;
169  }
170 
171  return kTRUE;
172 }
map< Int_t, Int_t > mapStrip
Short_t GetWire() const
Definition: PndMdtDigi.h:46
Short_t GetBox() const
Definition: PndMdtDigi.h:45
Short_t GetLayerID() const
Definition: PndMdtDigi.h:44
TClonesArray * fStripIArray
TClonesArray * fBoxIArray
Int_t GetDetectorID() const
Definition: PndMdtDigi.h:40
Short_t GetSector() const
Definition: PndMdtDigi.h:42
Short_t GetModule() const
Definition: PndMdtDigi.h:41
map< Int_t, Int_t > mapBox
void PndMdtClusterTask::Reset ( )
private

Definition at line 175 of file PndMdtClusterTask.cxx.

References mapBox, and mapStrip.

Referenced by MdtMapping().

175  {
176  // reset maps
177  mapBox.clear();
178  mapStrip.clear();
179 }
map< Int_t, Int_t > mapStrip
map< Int_t, Int_t > mapBox
void PndMdtClusterTask::SetPersistence ( Bool_t  pers)
inline

Definition at line 32 of file PndMdtClusterTask.h.

References PndPersistencyTask::SetPersistency().

32 { SetPersistency(pers); };
void SetPersistency(Bool_t val=kTRUE)
void PndPersistencyTask::SetPersistency ( Bool_t  val = kTRUE)
inlineinherited

Definition at line 31 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency, and val.

Referenced by barrelTrackFinder(), digi_complete(), digi_complete_newSTT(), digiOnly_complete(), PndBarrelTrackFinder::PndBarrelTrackFinder(), PndCATracking::PndCATracking(), PndDrcHitFinder::PndDrcHitFinder(), PndEmc2DLocMaxFinder::PndEmc2DLocMaxFinder(), PndEmcExpClusterSplitter::PndEmcExpClusterSplitter(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcFWEndcapDigi::PndEmcFWEndcapDigi(), PndEmcFWEndcapTimebasedWaveforms::PndEmcFWEndcapTimebasedWaveforms(), PndEmcHitProducer::PndEmcHitProducer(), PndEmcHitsToWaveform::PndEmcHitsToWaveform(), PndEmcMakeBump::PndEmcMakeBump(), PndEmcMakeCluster::PndEmcMakeCluster(), PndEmcMakeClusterOnline::PndEmcMakeClusterOnline(), PndEmcMakeDigi::PndEmcMakeDigi(), PndEmcMakeRecoHit::PndEmcMakeRecoHit(), PndEmcMultiWaveformToCalibratedDigi::PndEmcMultiWaveformToCalibratedDigi(), PndEmcPhiBumpSplitter::PndEmcPhiBumpSplitter(), PndEmcTmpWaveformToDigi::PndEmcTmpWaveformToDigi(), PndEmcWaveformToCalibratedDigi::PndEmcWaveformToCalibratedDigi(), PndEmcWaveformToDigi::PndEmcWaveformToDigi(), PndFtofHitProducerIdeal::PndFtofHitProducerIdeal(), PndFtsCATracking::PndFtsCATracking(), PndFtsHitProducerIdeal::PndFtsHitProducerIdeal(), PndFtsHitProducerRealFast::PndFtsHitProducerRealFast(), PndFtsHitProducerRealFull::PndFtsHitProducerRealFull(), PndFtsHoughTrackerTask::PndFtsHoughTrackerTask(), PndGemDigitize::PndGemDigitize(), PndGemFindHits::PndGemFindHits(), PndIdealTrackFinder::PndIdealTrackFinder(), PndLmdPixelClusterTask::PndLmdPixelClusterTask(), PndLmdPixelHitProducerFast::PndLmdPixelHitProducerFast(), PndMdtClusterTask(), PndMdtDigitization::PndMdtDigitization(), PndMdtHitProducerIdeal::PndMdtHitProducerIdeal(), PndMdtPointsToWaveform::PndMdtPointsToWaveform(), PndMdtTrkProducer::PndMdtTrkProducer(), PndMissingPzCleanerTask::PndMissingPzCleanerTask(), PndMvdGemTrackFinderOnHits::PndMvdGemTrackFinderOnHits(), PndMvdHitProducerIdeal::PndMvdHitProducerIdeal(), PndMvdPixelClusterTask::PndMvdPixelClusterTask(), PndMvdTimeWalkCorrTask::PndMvdTimeWalkCorrTask(), PndMvdToPix4ClusterTask::PndMvdToPix4ClusterTask(), PndRecoKalmanTask::PndRecoKalmanTask(), PndRecoKalmanTask2::PndRecoKalmanTask2(), PndRecoMultiKalmanTask::PndRecoMultiKalmanTask(), PndRecoMultiKalmanTask2::PndRecoMultiKalmanTask2(), PndRichHitFinder::PndRichHitFinder(), PndRichHitProducer::PndRichHitProducer(), PndSciTDigiTask::PndSciTDigiTask(), PndSciTHitProducerIdeal::PndSciTHitProducerIdeal(), PndSdsHitProducerIdeal::PndSdsHitProducerIdeal(), PndSdsHybridHitProducer::PndSdsHybridHitProducer(), PndSdsIdealClusterTask::PndSdsIdealClusterTask(), PndSdsIdealRecoTask::PndSdsIdealRecoTask(), PndSdsNoiseProducer::PndSdsNoiseProducer(), PndSdsPixelClusterTask::PndSdsPixelClusterTask(), PndSdsStripClusterTask::PndSdsStripClusterTask(), PndSdsStripHitProducer::PndSdsStripHitProducer(), PndSdsTimeWalkCorrTask::PndSdsTimeWalkCorrTask(), PndSttFindTracks::PndSttFindTracks(), PndSttHelixHitProducer::PndSttHelixHitProducer(), PndSttHitProducerIdeal::PndSttHitProducerIdeal(), PndSttHitProducerRealFast::PndSttHitProducerRealFast(), PndSttHitProducerRealFull::PndSttHitProducerRealFull(), PndSttMatchTracks::PndSttMatchTracks(), PndSttMvdGemTracking::PndSttMvdGemTracking(), PndTrackSmearTask::PndTrackSmearTask(), PndTrkTracking2::PndTrkTracking2(), reco(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), recoideal_complete(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndLmdPixelHitProducerFast::SetPersistance(), PndSdsHitProducerIdeal::SetPersistance(), PndSttMvdGemTracking::SetPersistenc(), SetPersistence(), PndSttHelixHitProducer::SetPersistence(), PndMissingPzCleanerTask::SetPersistence(), PndFtsHitProducerRealFast::SetPersistence(), PndFtsHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcFWEndcapDigi::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapTimebasedWaveforms::SetStorageOfData(), PndEmcMakeDigi::SetStorageOfData(), PndMdtPointsToWaveform::SetStorageOfData(), PndEmc2DLocMaxFinder::SetStorageOfData(), PndEmcMakeCluster::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcTmpWaveformToDigi::SetStorageOfData(), PndEmcWaveformToDigi::SetStorageOfData(), PndEmcWaveformToCalibratedDigi::SetStorageOfData(), PndEmcMultiWaveformToCalibratedDigi::SetStorageOfData(), PndEmcExpClusterSplitter::SetStorageOfData(), PndEmcPhiBumpSplitter::SetStorageOfData(), standard_tracking(), and PndEmcFullDigiTask::StoreDigi().

31 { fPersistency = val; }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11

Member Data Documentation

TClonesArray* PndMdtClusterTask::fBoxIArray
private

Input array of PndMdtDigi

Definition at line 44 of file PndMdtClusterTask.h.

Referenced by Init(), and MdtMapping().

TClonesArray* PndMdtClusterTask::fBoxOArray
private

Output array of PndMdtHit

Definition at line 48 of file PndMdtClusterTask.h.

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

TClonesArray* PndMdtClusterTask::fStripIArray
private

Definition at line 45 of file PndMdtClusterTask.h.

Referenced by Init(), and MdtMapping().

TClonesArray* PndMdtClusterTask::fStripOArray
private

Definition at line 49 of file PndMdtClusterTask.h.

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

map<Int_t, Int_t> PndMdtClusterTask::mapBox
private

Maps layer - digiIndex

Definition at line 52 of file PndMdtClusterTask.h.

Referenced by Exec(), MdtMapping(), and Reset().

map<Int_t, Int_t> PndMdtClusterTask::mapStrip
private

Definition at line 53 of file PndMdtClusterTask.h.

Referenced by Exec(), MdtMapping(), and Reset().


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