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

#include <PndLmdPairFinderTask.h>

Inheritance diagram for PndLmdPairFinderTask:
PndSdsTask PndPersistencyTask

Public Member Functions

void SetParContainers ()
 
 PndLmdPairFinderTask ()
 
 PndLmdPairFinderTask (const char *name)
 
virtual ~PndLmdPairFinderTask ()
 
virtual void SetBranchNames ()
 
virtual InitStatus Init ()
 
virtual InitStatus ReInit ()
 
virtual void Exec (Option_t *opt)
 
virtual void FinishEvent ()
 
virtual void FinishTask ()
 
void findDynamicCutParameters (Bool_t value, std::string parameterFile)
 
void useDynamicCut (Bool_t value, std::string parameterFile)
 
void setMaxDistance (Double_t value)
 
void ignoreClusters (Bool_t value)
 
virtual void SetInBranchId ()
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Protected Member Functions

void Register ()
 
void Reset ()
 
void getStatistics (PndLmdHitPair &candidate)
 
bool applyDynamicDistanceCut (PndLmdHitPair &candidate)
 
bool applyStaticDistanceCut (PndLmdHitPair &candidate)
 
bool candHitsOverlappingArea (const PndLmdHitPair &candidate)
 
bool candDistanceIsGood (PndLmdHitPair &candidate)
 
 ClassDef (PndSdsTask, 1)
 

Protected Attributes

PndLmdGeometryHelperhelper
 
TClonesArray * digiArray
 
TClonesArray * recoArray
 
TClonesArray * hitPairArray
 
TClonesArray * clusterCandidateArray
 
TString fInRecoBranchName
 
TString fInClusterCandidates
 
std::map< int, TClonesArray * > hitPairMap
 
std::map< int, int > hitCountMap
 
TString fInBranchName
 
TString fOutBranchName
 
TString fFolderName
 
Int_t fInBranchId
 
Int_t fOutBranchId
 

Private Member Functions

pixelHit getPixelHitFromSdsHit (PndSdsHit *sdsHit)
 

Private Attributes

Int_t noOfGoodPairs
 
Int_t noOfEvents
 
Int_t plane0
 
Int_t plane1
 
Int_t plane2
 
Int_t plane3
 
Int_t eventMissedAllPlanes
 
Int_t noOverlap
 
Int_t distanceTooHigh
 
Int_t sumOfPixelHits
 
Int_t unsuitable
 
Int_t hitsClustered
 
Int_t hitsSinglePixel
 
Int_t noOfCombos
 
Double_t _maxDistance
 
Bool_t _ignoreClusters
 
Bool_t _findDynamicCutParameters
 
Bool_t _useDynamicCut
 
std::string _cutParameterFile
 
std::map< int, dynamicCutHandlercutHandlers
 
boost::property_tree::ptree config
 

Detailed Description

Definition at line 26 of file PndLmdPairFinderTask.h.

Constructor & Destructor Documentation

PndLmdPairFinderTask::PndLmdPairFinderTask ( )

Definition at line 39 of file PndLmdPairFinderTask.cxx.

References _cutParameterFile, _findDynamicCutParameters, _ignoreClusters, _useDynamicCut, clusterCandidateArray, digiArray, recoArray, and unsuitable.

39  : // @suppress("Class members should be properly initialized")
40  PndSdsTask("pairfinder") {
41  digiArray = NULL;
42  recoArray = NULL;
43  clusterCandidateArray = NULL;
44 
45  unsuitable = 0;
46  _useDynamicCut = false;
48  _cutParameterFile = "";
49  _ignoreClusters = false;
50 
51 }
TClonesArray * clusterCandidateArray
PndLmdPairFinderTask::PndLmdPairFinderTask ( const char *  name)

Definition at line 53 of file PndLmdPairFinderTask.cxx.

References _cutParameterFile, _findDynamicCutParameters, _ignoreClusters, _useDynamicCut, clusterCandidateArray, digiArray, recoArray, and SetName.

53  : // @suppress("Class members should be properly initialized")
54  PndSdsTask("pairfinder with name") {
55  digiArray = NULL;
56  recoArray = NULL;
57  clusterCandidateArray = NULL;
58 
59  if (!strcmp(name, "")) SetName(name);
60  _useDynamicCut = false;
62  _cutParameterFile = "";
63  _ignoreClusters = false;
64 }
cout<< "-----------------------------------------------> Quarter VOLUME<<endl;name="QuarterShape";QuarterShape=newTGeoArb8(name,dz,vertQuar);name="Quarter4Vol";TStringmedium="air";QuarterVol=newTGeoVolumeAssembly(name);name="SubunitShape";SubunitShape=newTGeoArb8(name,dz,vertSub);TStringmedium="air";name="SubunitVol";name1="SubunitVol1";name2="SubunitVol2";name3="SubunitVol3";name4="SubunitVol4";name5="SubunitVol5";name6="SubunitVol6";name7="SubunitVol7";name8="SubunitVol8";name9="SubunitVol9";SubunitVol=newTGeoVolumeAssembly(name);SubunitVol1=newTGeoVolumeAssembly(name1);SubunitVol2=newTGeoVolumeAssembly(name2);SubunitVol3=newTGeoVolumeAssembly(name3);SubunitVol4=newTGeoVolumeAssembly(name4);SubunitVol5=newTGeoVolumeAssembly(name5);SubunitVol6=newTGeoVolumeAssembly(name6);SubunitVol7=newTGeoVolumeAssembly(name7);SubunitVol8=newTGeoVolumeAssembly(name8);SubunitVol9=newTGeoVolumeAssembly(name9);name="BoxShape";BoxShape=newTGeoArb8(name,dz,vertBox);TStringmedium="air";name="BoxVol";BoxVol=newTGeoVolumeAssembly(name);name1="BoxVol1";name2="BoxVol2";name3="BoxVol3";name4="BoxVol4";BoxVol1=newTGeoVolumeAssembly(name1);BoxVol2=newTGeoVolumeAssembly(name2);BoxVol3=newTGeoVolumeAssembly(name3);BoxVol4=newTGeoVolumeAssembly(name4);for(Int_tb=0;b<kNumOfBoxes;b++){cout<<""<<endl;cout<<"---------------->BOXnumber:"<<b<<endl;if(b==0){trBox=newTGeoTranslation(tr+kSpaceInSub+kAlveoleThickness+0.5*kSpaceInBox,tr+kSpaceInSub+kAlveoleThickness+0.5*kSpaceInBox,0.);rotBox=newTGeoRotation();rotBox.RotateX(0.465518);rotBox.RotateY(-0.465518);}if(b==1){trBox=newTGeoTranslation(-tr-kSpaceInSub-kAlveoleThickness-0.5*kSpaceInBox,-tr-kSpaceInSub-kAlveoleThickness-0.5*kSpaceInBox,0.);rotBox=newTGeoRotation();rotBox.RotateX(-0.465518);rotBox.RotateY(0.465518);}if(b==2){trBox=newTGeoTranslation(tr+kSpaceInSub+kAlveoleThickness+0.5*kSpaceInBox,-tr-kSpaceInSub-kAlveoleThickness-0.5*kSpaceInBox,0.);rotBox=newTGeoRotation();rotBox.RotateX(-0.465518);rotBox.RotateY(-0.465518);}if(b==3){trBox=newTGeoTranslation(-tr-kSpaceInSub-kAlveoleThickness-0.5*kSpaceInBox,tr+kSpaceInSub+kAlveoleThickness+0.5*kSpaceInBox,0.);rotBox=newTGeoRotation();rotBox.RotateX(0.465518);rotBox.RotateY(0.465518);}TGeoCombiTrans*trrotBox=newTGeoCombiTrans(trBox,rotBox);name="BoxVol";name+=b;trrotBox->SetName(name);trrotBox->RegisterYourself();SubunitVol->AddNode(BoxVol,b,trrotBox);if(b==1){name+=b;trrotBox->SetName(name);trrotBox->RegisterYourself();SubunitVol1->AddNode(BoxVol,b,trrotBox);}if(b==2){name+=b;trrotBox->SetName(name);trrotBox->RegisterYourself();SubunitVol2->AddNode(BoxVol1,b,trrotBox);}if(b==0){name+=b;trrotBox-> SetName(name)
TClonesArray * clusterCandidateArray
TString name
PndLmdPairFinderTask::~PndLmdPairFinderTask ( )
virtual

Definition at line 66 of file PndLmdPairFinderTask.cxx.

66  {
67  std::cout << "PairFinderTask destructor called." << "\n";
68 }

Member Function Documentation

bool PndLmdPairFinderTask::applyDynamicDistanceCut ( PndLmdHitPair candidate)
protected

Definition at line 410 of file PndLmdPairFinderTask.cxx.

References cutHandlers, PndLmdHitPair::getDistance(), dynamicCutHandler::getMaxDist(), dynamicCutHandler::getMinDist(), and PndLmdHitPair::getOverlapId().

Referenced by Exec().

410  {
411 
412  int overlapID = candidate.getOverlapId();
413 
414  double distance = candidate.getDistance();
415  dynamicCutHandler &handler = cutHandlers[overlapID];
416 
417  if (distance < handler.getMinDist() || distance > handler.getMaxDist()) {
418  return false;
419  }
420  return true;
421 }
std::map< int, dynamicCutHandler > cutHandlers
Int_t getOverlapId() const
Double_t getDistance() const
bool PndLmdPairFinderTask::applyStaticDistanceCut ( PndLmdHitPair candidate)
protected

Definition at line 423 of file PndLmdPairFinderTask.cxx.

References _maxDistance, distanceTooHigh, and PndLmdHitPair::getDistance().

Referenced by Exec().

423  {
424 
425  //check distance squared
426  double distance = candidate.getDistance();
427  if (distance > _maxDistance) {
428  distanceTooHigh++;
429  return false;
430  }
431  return true;
432 }
Double_t getDistance() const
bool PndLmdPairFinderTask::candDistanceIsGood ( PndLmdHitPair candidate)
protected
bool PndLmdPairFinderTask::candHitsOverlappingArea ( const PndLmdHitPair candidate)
protected

Definition at line 561 of file PndLmdPairFinderTask.cxx.

References PndLmdHitPair::getId1(), PndLmdHitPair::getId2(), helper, and PndLmdGeometryHelper::isOverlappingArea().

Referenced by Exec().

561  {
562  int firstSensorId, secondSensorId;
563  firstSensorId = candidate.getId1();
564  secondSensorId = candidate.getId2();
565 
566  //same sensor hit?
567  if (firstSensorId == secondSensorId) {
568  return false;
569  }
570 
571  return helper->isOverlappingArea(firstSensorId, secondSensorId);
572 }
PndLmdGeometryHelper * helper
Int_t getId2() const
Definition: PndLmdHitPair.h:60
Int_t getId1() const
Definition: PndLmdHitPair.h:57
bool isOverlappingArea(const int id1, const int id2)
PndSdsTask::ClassDef ( PndSdsTask  ,
 
)
protectedinherited
void PndLmdPairFinderTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Definition at line 205 of file PndLmdPairFinderTask.cxx.

References pixelHit::_col, _findDynamicCutParameters, pixelHit::_row, _useDynamicCut, dynamicCutHandler::addToSamples(), applyDynamicDistanceCut(), applyStaticDistanceCut(), PndLmdHitPair::calculateDistance(), candHitsOverlappingArea(), PndLmdHitPair::check(), cutHandlers, distanceTooHigh, PndLmdGeometryHelper::getHitLocationInfo(), PndLmdHitPair::getId1(), PndLmdHitPair::getId2(), PndLmdHitPair::getOverlapId(), PndLmdGeometryHelper::getOverlapIdFromSensorIDs(), getPixelHitFromSdsHit(), PndSdsHit::GetPosition(), PndSdsHit::GetSensorID(), getStatistics(), helper, hitPairArray, PndLmdHitPair::isSane(), noOfEvents, noOverlap, PndLmdHitPair::PrintPair(), dynamicCutHandler::ready(), recoArray, PndLmdHitPair::setOverlapId(), PndLmdHitPair::setPixelHits(), PndLmdGeometryHelper::transformPndGlobalToLmdLocal(), and unsuitable.

205  {
206 
207  //clear temporary array for next event
208  hitPairArray->Clear();
209 
210  //Int_t nPixels = digiArray->GetEntriesFast();
211  noOfEvents++;
212 
213  //display some kind of progress
214  if ((noOfEvents % 10000) == 0) {
215  cout << "processed " << noOfEvents << "\n";
216  }
217 
218  // ========== loop over recos in recoArray =========
219  Int_t nRecos = recoArray->GetEntriesFast();
220 
221  Int_t storedPairsPerEvent = 0;
222 
223  //try every cluster combination and check
224  for (auto iReco = 0; iReco < nRecos; iReco++) {
225  for (auto jReco = iReco + 1; jReco < nRecos; jReco++) {
226 
227  PndSdsHit *hitOne = (PndSdsHit*) recoArray->At(iReco);
228  PndSdsHit *hitTwo = (PndSdsHit*) recoArray->At(jReco);
229 
230  int id1 = hitOne->GetSensorID();
231  int id2 = hitTwo->GetSensorID();
232 
233  // sort hits so hitOne is ALWAYS upstream
234  auto &infoOne = helper->getHitLocationInfo(id1);
235  auto &infoTwo = helper->getHitLocationInfo(id2);
236 
237  if (infoOne.module_side > infoTwo.module_side) {
238  std::swap(hitOne, hitTwo);
239  id1 = hitOne->GetSensorID();
240  id2 = hitTwo->GetSensorID();
241  }
242 
243  //from here on, the hits are sorted so hitOne is ALWAYS upstream
244 
245  const TVector3 vecOneGlobal = hitOne->GetPosition();
246  const TVector3 vecTwoGlobal = hitTwo->GetPosition();
247 
248  auto vecOneLocal = helper->transformPndGlobalToLmdLocal(vecOneGlobal);
249  auto vecTwoLocal = helper->transformPndGlobalToLmdLocal(vecTwoGlobal);
250 
251  //make PndLmdHitPair and check for data sanity, then store to vector
252  PndLmdHitPair pairCanditate(vecOneGlobal, vecTwoGlobal, id1, id2);
253 
254  //is the candidate even on an overlapping area? this swaps hits if necessary
255  if (!candHitsOverlappingArea(pairCanditate)) {
256  noOverlap++;
257  continue;
258  }
259 
260  int overlapId = helper->getOverlapIdFromSensorIDs(pairCanditate.getId1(), pairCanditate.getId2());
261  pairCanditate.setOverlapId(overlapId);
262 
263  pixelHit pixelHitOne = getPixelHitFromSdsHit(hitOne);
264  pixelHit pixelHitTwo = getPixelHitFromSdsHit(hitTwo);
265 
266  pairCanditate.setPixelHits(pixelHitOne._col, pixelHitOne._row, pixelHitTwo._col, pixelHitTwo._row);
267 
268  pairCanditate.calculateDistance();
269  pairCanditate.check();
270 
271  if (!pairCanditate.isSane()) {
272  pairCanditate.PrintPair();
273  cerr << "==== WARNING: ====" << "\n";
274  cerr << "pair seems valid but did not pass sanity check!" << "\n";
275  cerr << "===============================================" << "\n";
276  continue;
277  }
278 
279  //pair must now be sane, in LMD local and has overlapID et al.
280 
281  //are we still looking for the dynamic cut values?
283  dynamicCutHandler &handler = cutHandlers[pairCanditate.getOverlapId()];
284  handler.addToSamples(pairCanditate);
285  //we don't want to store the pair, we only need it's distance
286  continue;
287  }
288 
289  //choose whether to apply dynamic cut or simple cut.
290  if (!_useDynamicCut) {
291  if (!applyStaticDistanceCut(pairCanditate)) {
292  unsuitable++;
293  continue;
294  }
295  //pair survived distance cut? great, store!
296  }
297 
298  if (_useDynamicCut) {
299  //is the cutHandler ready for this overlapID? if not, something went wrong.
300  dynamicCutHandler &handler = cutHandlers[pairCanditate.getOverlapId()];
301  if (!handler.ready()) {
302  continue;
303  }
304  //the cutHandler is ready, apply distance cut
305  if (!applyDynamicDistanceCut(pairCanditate)) {
306  distanceTooHigh++;
307  continue;
308  }
309  //pair survived distance cut? great, store!
310  }
311 
312  // if the pair survived to this point, it's valid. store!
313  getStatistics(pairCanditate);
314  new ((*hitPairArray)[storedPairsPerEvent]) PndLmdHitPair(pairCanditate);
315  storedPairsPerEvent++;
316  }
317  }
318 
319  return;
320 }
std::map< int, dynamicCutHandler > cutHandlers
bool applyStaticDistanceCut(PndLmdHitPair &candidate)
TVector3 GetPosition() const
Definition: PndSdsHit.h:93
bool applyDynamicDistanceCut(PndLmdHitPair &candidate)
void getStatistics(PndLmdHitPair &candidate)
pixelHit getPixelHitFromSdsHit(PndSdsHit *sdsHit)
PndLmdGeometryHelper * helper
const PndLmdHitLocationInfo & getHitLocationInfo(const std::string &volume_path)
void addToSamples(PndLmdHitPair pair)
TVector3 transformPndGlobalToLmdLocal(const TVector3 &vec)
Int_t GetSensorID() const
Definition: PndSdsHit.h:90
int getOverlapIdFromSensorIDs(int id1, int id2)
bool candHitsOverlappingArea(const PndLmdHitPair &candidate)
void PndLmdPairFinderTask::findDynamicCutParameters ( Bool_t  value,
std::string  parameterFile 
)
inline

Definition at line 76 of file PndLmdPairFinderTask.h.

References _cutParameterFile, and _findDynamicCutParameters.

76  {
78  _cutParameterFile = parameterFile;
79  }
void PndLmdPairFinderTask::FinishEvent ( )
virtual

Definition at line 322 of file PndLmdPairFinderTask.cxx.

322  {
323 }
void PndLmdPairFinderTask::FinishTask ( )
virtual

Definition at line 325 of file PndLmdPairFinderTask.cxx.

References _cutParameterFile, _findDynamicCutParameters, dynamicCutHandler::_maxDist, dynamicCutHandler::_mean, dynamicCutHandler::_minDist, dynamicCutHandler::_overlapID, dynamicCutHandler::_ready, dynamicCutHandler::_RMS, dynamicCutHandler::calcMinAndMax(), config, cutHandlers, distanceTooHigh, eventMissedAllPlanes, hitsClustered, hitsSinglePixel, noOfCombos, noOfEvents, noOfGoodPairs, noOverlap, plane0, plane1, plane2, plane3, printf(), dynamicCutHandler::samples, sumOfPixelHits, and PndLmdAlignManager::writeConfigFile().

325  {
326 
327  int notReady = 0;
328 
329  //were we looking for dynamic cut parameters? write them to disk
331  cout << "PndLmdSensorAligner: writing cut parameters to disk...\n";
332 
333  cout << "There are " << cutHandlers.size() << " handlers.\n";
334 
335  for (auto &handlerIt : cutHandlers) {
336  dynamicCutHandler &handler = handlerIt.second;
337  if (!handler._ready) {
338  notReady++;
339  cout << "Warning! handler " << handler._overlapID << " only has " << handler.samples.size()
340  << " pairs!\n";
341  continue;
342  }
343  handler.calcMinAndMax();
344 
345  std::stringstream configput("");
346  configput << "dynamicCut.aligners." << handler._overlapID << ".";
347  config.put(configput.str() + "minDist", handler._minDist);
348  config.put(configput.str() + "maxDist", handler._maxDist);
349  config.put(configput.str() + "mean", handler._mean);
350  config.put(configput.str() + "RMS", handler._RMS);
351 
352  }
353  if (notReady > 0) {
354  cout << "PndLmdSensorAligner: Attention! " << notReady << " handlers don't have enough pairs.\n";
355  }
356 
358  cout << "PndLmdSensorAligner: Successfully written cutParameters to " << _cutParameterFile << "\n";
359  }
360  else {
361  cout << "PndLmdSensorAligner: could not write cut parameters to disk!\n";
362  }
363  }
364 
365  //also, write statistics
366  Int_t sumOfAllPlanes = plane0 + plane1 + plane2 + plane3;
367  double plane0Percent = ((double) plane0 / noOfGoodPairs) * 100;
368  double plane1Percent = ((double) plane1 / noOfGoodPairs) * 100;
369  double plane2Percent = ((double) plane2 / noOfGoodPairs) * 100;
370  double plane3Percent = ((double) plane3 / noOfGoodPairs) * 100;
371  double allPlanesPercent = ((double) sumOfAllPlanes / noOfGoodPairs) * 100;
372  double clusterRatio = ((double) hitsClustered / (double) (hitsSinglePixel + hitsClustered)) * 100;
373  double pixelsPerEvent = (double) sumOfPixelHits / (double) noOfEvents;
374  double goodPairsPerEvent = (double) noOfGoodPairs / (double) noOfEvents;
375 
376  cout << "\n";
377  cout << "*************************************************************" << "\n";
378  cout << " pair finder done " << "\n";
379  cout << "*************************************************************" << "\n";
380  cout << "\n";
381  cout << " counting statistics:" << "\n";
382  cout << "\n";
383  printf("total events: %d \n", noOfEvents);
384  printf("events that missed all sensors: %d \n", eventMissedAllPlanes);
385  printf("total pixel hits: %d \n", sumOfPixelHits);
386  printf("cluster ratio: %.2f %% \n", clusterRatio);
387  printf("pixel hits per event: %.2f \n", pixelsPerEvent);
388  printf("----------------------------\n");
389  printf("possible hit pair combinations: %d \n", noOfCombos);
390  printf("no overlap: %d \n", noOverlap);
391  printf("distance too high: %d \n", distanceTooHigh);
392  printf("----------------------------\n");
393  printf("good pairs: %d \n", noOfGoodPairs);
394  printf("good pairs per event: %.2f \n", goodPairsPerEvent);
395  printf("----------------------------\n");
396  printf("hits on plane 0: %.2f %% \n", plane0Percent);
397  printf("hits on plane 1: %.2f %%\n", plane1Percent);
398  printf("hits on plane 2: %.2f %%\n", plane2Percent);
399  printf("hits on plane 3: %.2f %%\n", plane3Percent);
400  printf("hits on all planes: %.2f %% (should be 100%%!) \n", allPlanesPercent);
401  cout << "\n";
402  cout << "*************************************************************" << "\n";
403 
404  return;
405 }
std::map< int, dynamicCutHandler > cutHandlers
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
boost::property_tree::ptree config
std::vector< double > samples
static bool writeConfigFile(boost::property_tree::ptree configTree, std::string filename, bool replaceExisting=true)
Bool_t PndPersistencyTask::GetPersistency ( )
inlineinherited

Definition at line 32 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency.

Referenced by PndLmdPixelHitProducerFast::GetPersistance(), PndMdtDigitization::Init(), PndMdtHitProducerIdeal::Init(), PndMdtClusterTask::Init(), PndFtsHitProducerRealFast::Init(), PndSttHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::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; }
pixelHit PndLmdPairFinderTask::getPixelHitFromSdsHit ( PndSdsHit sdsHit)
private

Definition at line 464 of file PndLmdPairFinderTask.cxx.

References _ignoreClusters, clusterCandidateArray, col, digiArray, exit(), PndSdsHit::GetClusterIndex(), PndSdsCluster::GetClusterSize(), PndSdsCluster::GetDigiIndex(), PndSdsDigiPixel::GetPixelColumn(), PndSdsDigiPixel::GetPixelRow(), PndSdsDigi::GetSensorID(), hitsClustered, hitsSinglePixel, i, and row.

Referenced by Exec().

464  {
465 
466  pixelHit result;
467  int hitSensorId;
468  double row, col;
469 
470  int clusterIndex = sdsHit->GetClusterIndex();
471 
472  std::vector<pixelCluster> clusters;
473  PndSdsClusterPixel *clusterPixelCand = (PndSdsClusterPixel*) clusterCandidateArray->At(clusterIndex);
474 
475  int noOfClusters = clusterPixelCand->GetClusterSize();
476 
477  for (int iCluster = 0; iCluster < noOfClusters; iCluster++) {
478 
479  PndSdsDigiPixel* mcPixel = (PndSdsDigiPixel*) digiArray->At(
480  clusterPixelCand->GetDigiIndex(iCluster));
481 
482  if (!mcPixel) {
483  exit(1);
484  }
485 
486  hitSensorId = mcPixel->GetSensorID();
487 
488  col = mcPixel->GetPixelColumn();
489  row = mcPixel->GetPixelRow();
490 
491  //skip decoding errors
492  if (col < 0 || row < 0) {
493  continue;
494  }
495  else {
496  clusters.push_back(pixelCluster(pixelHit(hitSensorId, col, row)));
497  }
498  }
499 
500  //all hits are present in clusters
501 
502  /*
503  * ============ find clusters ============
504  * input: vector<pixelCluster>
505  * output vector<pixelCluster>
506  *
507  * algorithm: Hierarchical Clustering Algorithm, see https://en.wikipedia.org/wiki/Hierarchical_clustering
508  * start by putting every pixel hit in a separate cluster (done above).
509  * then merge every two clusters that are close enough (1-2 pixels, may be open to adjustment).
510  * terminate if no more clusters can be merged or after N iterations for N pixel hits.
511  * all remaining clusters contain every pixel hit.
512  */
513 
514  //for every cluster, check every other cluster
515  for (size_t i = 0; i < clusters.size(); i++) {
516  //clusters are interchangeable, check every pair only once
517  for (size_t j = i + 1; j < clusters.size(); j++) {
518 
519  //clusters must be on same sensor
520  if (clusters[i]._sensorId != clusters[j]._sensorId) {
521  continue;
522  }
523 
524  if (clusters[i].isNeighbour(clusters[j])) {
525  clusters[i].merge(clusters[j]);
526  clusters.erase(clusters.begin() + j);
527  j--;
528  }
529  }
530  }
531 
532  //calculate cluster centers and discard large clusters
533  //for statistis: count cluster ratio
534  for (size_t i = 0; i < clusters.size(); i++) {
535  clusters[i].calculateCenter();
536 
537  //FIXME: read from parameter file!
538  if (clusters[i].clusterSize > 1) {
539  hitsClustered++;
540 
541  //if ignoreClustres is set, skip clustered events
542  //FIXME: get maximum cluster size from config file
543  if (_ignoreClusters || clusters[i].clusterSize > 3) {
544  clusters.erase(clusters.begin() + i);
545  /*
546  * this is important! when you erase cluster i, cluster i+1 becomes cluster i, but the first i
547  * becomes i+1 itself.
548  * that means, cluster i (former i+1) never gets checked in the first line of the outer for loop!
549  */
550  i--;
551  }
552  }
553  else {
554  hitsSinglePixel++;
555  }
556  }
557  return pixelHit(hitSensorId, clusters[0].centerCol, clusters[0].centerRow);
558 
559 }
int row
Definition: anaLmdDigi.C:67
Int_t GetPixelRow() const
Int_t GetClusterSize() const
Definition: PndSdsCluster.h:39
Int_t GetSensorID() const
Definition: PndSdsDigi.h:59
Int_t i
Definition: run_full.C:25
exit(0)
Int_t GetPixelColumn() const
int col
Definition: anaLmdDigi.C:67
TClonesArray * clusterCandidateArray
Int_t GetDigiIndex(Int_t i) const
Definition: PndSdsCluster.h:40
Data class to store the digi output of a pixel module.
Int_t GetClusterIndex() const
Definition: PndSdsHit.h:94
void PndLmdPairFinderTask::getStatistics ( PndLmdHitPair candidate)
protected

Definition at line 434 of file PndLmdPairFinderTask.cxx.

References PndLmdGeometryHelper::getHitLocationInfo(), PndLmdHitPair::getId1(), helper, noOfGoodPairs, PndLmdHitLocationInfo::plane, plane0, plane1, plane2, and plane3.

Referenced by Exec().

434  {
435 
436  //check for overlap
437  int fplane;
438 
439  auto &infoOne = helper->getHitLocationInfo(candidate.getId1());
440  fplane = infoOne.plane;
441 
442  //count events per plane
443  switch (fplane) {
444  case 0:
445  plane0++;
446  break;
447  case 1:
448  plane1++;
449  break;
450  case 2:
451  plane2++;
452  break;
453  case 3:
454  plane3++;
455  break;
456  default:
457  //should never happen, can only indicate decoding error
458  cerr << "WARNING: hit was deemed suitable but plane number is " << fplane << "\n";
459  cerr << "This should not happen!" << "\n";
460  }
461  noOfGoodPairs++;
462 }
PndLmdGeometryHelper * helper
const PndLmdHitLocationInfo & getHitLocationInfo(const std::string &volume_path)
Int_t getId1() const
Definition: PndLmdHitPair.h:57
void PndLmdPairFinderTask::ignoreClusters ( Bool_t  value)
inline

Definition at line 92 of file PndLmdPairFinderTask.h.

References _ignoreClusters.

92  {
93  _ignoreClusters = value;
94  }
InitStatus PndLmdPairFinderTask::Init ( )
virtual

Virtual method Init

Definition at line 70 of file PndLmdPairFinderTask.cxx.

References _cutParameterFile, _findDynamicCutParameters, dynamicCutHandler::_maxDist, _maxDistance, dynamicCutHandler::_minDist, dynamicCutHandler::_overlapID, dynamicCutHandler::_ready, _useDynamicCut, clusterCandidateArray, config, cutHandlers, digiArray, distanceTooHigh, eventMissedAllPlanes, PndLmdAlignManager::exists(), PndSdsTask::fFolderName, PndSdsTask::fInBranchName, fInClusterCandidates, fInRecoBranchName, PndSdsTask::fOutBranchName, PndLmdGeometryHelper::getAvailableOverlapIDs(), PndLmdGeometryHelper::getInstance(), helper, hitPairArray, hitsClustered, hitsSinglePixel, i, noOfCombos, noOfEvents, noOfGoodPairs, noOverlap, plane0, plane1, plane2, plane3, PndLmdAlignManager::readConfigFile(), recoArray, SetBranchNames(), sumOfPixelHits, and unsuitable.

70  {
71 
72  noOfGoodPairs = 0;
73  noOfEvents = noOfCombos = 0;
75  hitsSinglePixel = 0;
76  hitsSinglePixel = 0;
79  plane0 = plane1 = plane2 = plane3 = 0;
80 
81  fInBranchName = "LMDPixelDigis";
82  fInRecoBranchName = "LMDHitsPixel";
83  fOutBranchName = "LMDPixelPairs";
84  fInClusterCandidates = "LMDPixelClusterCand";
85 
86  fFolderName = "cbmsim";
87 
88  _maxDistance = 1250e-4;
89 
91 
92  FairRootManager* ioman = FairRootManager::Instance();
93 
94  if (!ioman) {
95  std::cout << "-E- LmdPairFinder::Init: " << "RootManager not instantiated!" << "\n";
96  return kFATAL;
97  }
98 
99  digiArray = (TClonesArray*) ioman->GetObject(fInBranchName);
100  recoArray = (TClonesArray*) ioman->GetObject(fInRecoBranchName);
101  clusterCandidateArray = (TClonesArray*) ioman->GetObject(fInClusterCandidates);
102 
103  if (!digiArray) {
104  std::cout << "-W- LmdPairFinder::Init: " << "ERROR, branch name " << fInBranchName
105  << " could not found!" << "\n";
106  return kERROR;
107  }
108 
109  if (!recoArray) {
110  std::cout << "-W- LmdPairFinder::Init: " << "ERROR, branch name " << fInRecoBranchName
111  << " not found!" << "\n";
112  return kERROR;
113  }
114 
115  if (!clusterCandidateArray) {
116  std::cout << "-W- LmdPairFinder::Init: " << "ERROR, branch name " << fInClusterCandidates
117  << " not found!" << "\n";
118  return kERROR;
119  }
120 
122 
123  const std::vector<int> overlapIDs = helper->getAvailableOverlapIDs();
124 
125  cout << "PndLmdSensorAligner: reading dynamic cut Parameters from file... ";
127  cout << "cut parameter file does not exist! using static cut instead.\n";
128  _useDynamicCut = false;
129  }
130  else {
132 
133  for (unsigned int i = 0; i < overlapIDs.size(); i++) {
134  int overlapID = overlapIDs[i];
135  dynamicCutHandler &handler = cutHandlers[overlapID];
136  handler._overlapID = overlapIDs[i];
137 
138  std::stringstream configput("");
139  configput << "dynamicCut.aligners." << handler._overlapID << ".";
140 
141  try {
142  handler._minDist = config.get<double>(configput.str() + "minDist");
143  handler._maxDist = config.get<double>(configput.str() + "maxDist");
144  }
145  catch (std::exception &e) {
146  cerr << "PndLmdSensorAligner: ERROR! Parameter not found in config file!\n";
147  }
148  handler._ready = true;
149  }
150  cout << "done.\n";
151  }
152  }
153 
155  cout << "PndLmdSensorAligner: trying to find dynamic cut Parameters.\n";
156  }
157 
158  hitPairArray = new TClonesArray("PndLmdHitPair");
159  ioman->Register("PndLmdHitPair", "PndLmd", hitPairArray, kTRUE);
160 
162 
163  std::cout << "LmdPairFinder::Init(): Initialization successful." << "\n";
164  return kSUCCESS;
165 }
std::map< int, dynamicCutHandler > cutHandlers
static std::vector< int > getAvailableOverlapIDs()
TString fOutBranchName
Definition: PndSdsTask.h:40
Int_t i
Definition: run_full.C:25
static PndLmdGeometryHelper & getInstance()
TClonesArray * clusterCandidateArray
PndLmdGeometryHelper * helper
boost::property_tree::ptree config
TString fInBranchName
Definition: PndSdsTask.h:39
TString fFolderName
Definition: PndSdsTask.h:41
static boost::property_tree::ptree readConfigFile(std::string filename)
static bool exists(std::string file)
void PndLmdPairFinderTask::Register ( )
protected

Definition at line 407 of file PndLmdPairFinderTask.cxx.

407  {
408 }
InitStatus PndLmdPairFinderTask::ReInit ( )
virtual

Definition at line 171 of file PndLmdPairFinderTask.cxx.

171  {
172  return InitStatus();
173 }
void PndLmdPairFinderTask::Reset ( )
protected

Definition at line 574 of file PndLmdPairFinderTask.cxx.

574  {
575 }
void PndLmdPairFinderTask::SetBranchNames ( )
virtual

Take default naming

Implements PndSdsTask.

Definition at line 167 of file PndLmdPairFinderTask.cxx.

References PndSdsTask::fInBranchName.

Referenced by Init().

167  {
168  std::cout << "branch names set to " << fInBranchName << "\n";
169 }
TString fInBranchName
Definition: PndSdsTask.h:39
virtual void PndSdsTask::SetInBranchId ( )
inlinevirtualinherited

Reimplemented in PndSdsStripClusterTask, PndSdsPixelClusterTask, and PndSdsIdealClusterTask.

Definition at line 30 of file PndSdsTask.h.

References PndSdsTask::fInBranchId, PndSdsTask::fInBranchName, PndSdsTask::fOutBranchId, and PndSdsTask::fOutBranchName.

Referenced by PndSdsTimeWalkCorrTask::Init(), PndSdsRecoTask::Init(), PndSdsIdealRecoTask::Init(), PndLmdStripHitProducer::SetBranchNames(), PndMvdHitProducerIdeal::SetBranchNames(), PndLmdHybridHitProducer::SetBranchNames(), PndMvdHybridHitProducer::SetBranchNames(), and PndMvdStripHitProducer::SetBranchNames().

30  {
31  FairRootManager *ioman = FairRootManager::Instance();
32  fInBranchId = ioman->GetBranchId(fInBranchName);
33  fOutBranchId = ioman->GetBranchId(fOutBranchName);
34  std::cout << "InBranchId: " << fInBranchId << " for Branch: " << fInBranchName.Data() << std::endl;
35  std::cout << "OutBranchId: " << fOutBranchId << " for Branch: " << fOutBranchName.Data() << std::endl;
36  }
Int_t fInBranchId
Definition: PndSdsTask.h:43
TString fOutBranchName
Definition: PndSdsTask.h:40
Int_t fOutBranchId
Definition: PndSdsTask.h:44
TString fInBranchName
Definition: PndSdsTask.h:39
void PndLmdPairFinderTask::setMaxDistance ( Double_t  value)
inline

Definition at line 88 of file PndLmdPairFinderTask.h.

References _maxDistance.

88  {
89  _maxDistance = value;
90  }
void PndLmdPairFinderTask::SetParContainers ( )

Definition at line 175 of file PndLmdPairFinderTask.cxx.

References PndLmdContFact::GetAlignParNames(), PndGeoHandling::Instance(), rtdb, PndGeoHandling::SetParContainers(), and TString.

175  {
176 
177  FairRun* ana;
178  FairRuntimeDb* rtdb;
179 
180  std::cout << "PndLmdPixelClusterTask::SetParContainers() " << "\n";
181  // Get Base Container
182  ana = FairRun::Instance();
183  rtdb = ana->GetRuntimeDb();
184 
185  PndLmdContFact* themvdcontfact = (PndLmdContFact*) rtdb->getContFactory("PndLmdContFact");
186  //read params for lumi alignment
187  TList* theAlignLMDContNames = themvdcontfact->GetAlignParNames();
188  Info("SetParContainers()", "AlignLMD The container names list contains %i entries",
189  theAlignLMDContNames->GetEntries());
190  TIter cfAlIter(theAlignLMDContNames);
191  while (TObjString* contname = (TObjString*) cfAlIter()) {
192  TString parsetname = contname->String();
193  Info("SetParContainers()", "%s", parsetname.Data());
194  }
195 
197 }
TList * GetAlignParNames()
virtual void SetParContainers()
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
static PndGeoHandling * Instance()
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::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(), PndMdtClusterTask::SetPersistence(), PndSttHelixHitProducer::SetPersistence(), PndMissingPzCleanerTask::SetPersistence(), PndFtsHitProducerRealFast::SetPersistence(), PndFtsHitProducerRealFull::SetPersistence(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapDigi::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
void PndLmdPairFinderTask::useDynamicCut ( Bool_t  value,
std::string  parameterFile 
)
inline

Definition at line 82 of file PndLmdPairFinderTask.h.

References _cutParameterFile, and _useDynamicCut.

Referenced by runLumiPixel2ePairFinder().

82  {
83  _useDynamicCut = value;
84  _cutParameterFile = parameterFile;
85  }

Member Data Documentation

std::string PndLmdPairFinderTask::_cutParameterFile
private
Bool_t PndLmdPairFinderTask::_findDynamicCutParameters
private
Bool_t PndLmdPairFinderTask::_ignoreClusters
private
Double_t PndLmdPairFinderTask::_maxDistance
private

Definition at line 40 of file PndLmdPairFinderTask.h.

Referenced by applyStaticDistanceCut(), Init(), and setMaxDistance().

Bool_t PndLmdPairFinderTask::_useDynamicCut
private

Definition at line 46 of file PndLmdPairFinderTask.h.

Referenced by Exec(), Init(), PndLmdPairFinderTask(), and useDynamicCut().

TClonesArray* PndLmdPairFinderTask::clusterCandidateArray
protected

Definition at line 105 of file PndLmdPairFinderTask.h.

Referenced by getPixelHitFromSdsHit(), Init(), and PndLmdPairFinderTask().

boost::property_tree::ptree PndLmdPairFinderTask::config
private

Definition at line 52 of file PndLmdPairFinderTask.h.

Referenced by FinishTask(), and Init().

std::map<int, dynamicCutHandler> PndLmdPairFinderTask::cutHandlers
private

Definition at line 48 of file PndLmdPairFinderTask.h.

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

TClonesArray* PndLmdPairFinderTask::digiArray
protected

Definition at line 102 of file PndLmdPairFinderTask.h.

Referenced by getPixelHitFromSdsHit(), Init(), and PndLmdPairFinderTask().

Int_t PndLmdPairFinderTask::distanceTooHigh
private

Definition at line 34 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::eventMissedAllPlanes
private

Definition at line 33 of file PndLmdPairFinderTask.h.

Referenced by FinishTask(), and Init().

TString PndSdsTask::fFolderName
protectedinherited
Int_t PndSdsTask::fInBranchId
protectedinherited
TString PndSdsTask::fInBranchName
protectedinherited
TString PndLmdPairFinderTask::fInClusterCandidates
protected

Definition at line 108 of file PndLmdPairFinderTask.h.

Referenced by Init().

TString PndLmdPairFinderTask::fInRecoBranchName
protected

Definition at line 107 of file PndLmdPairFinderTask.h.

Referenced by Init().

Int_t PndSdsTask::fOutBranchId
protectedinherited

Definition at line 44 of file PndSdsTask.h.

Referenced by PndSdsTask::SetInBranchId().

TString PndSdsTask::fOutBranchName
protectedinherited
PndLmdGeometryHelper* PndLmdPairFinderTask::helper
protected

Definition at line 100 of file PndLmdPairFinderTask.h.

Referenced by candHitsOverlappingArea(), Exec(), getStatistics(), and Init().

std::map<int, int> PndLmdPairFinderTask::hitCountMap
protected

Definition at line 111 of file PndLmdPairFinderTask.h.

TClonesArray* PndLmdPairFinderTask::hitPairArray
protected

Definition at line 104 of file PndLmdPairFinderTask.h.

Referenced by Exec(), and Init().

std::map<int, TClonesArray*> PndLmdPairFinderTask::hitPairMap
protected

Definition at line 110 of file PndLmdPairFinderTask.h.

Int_t PndLmdPairFinderTask::hitsClustered
private

Definition at line 37 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::hitsSinglePixel
private

Definition at line 37 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::noOfCombos
private

Definition at line 38 of file PndLmdPairFinderTask.h.

Referenced by FinishTask(), and Init().

Int_t PndLmdPairFinderTask::noOfEvents
private

Definition at line 31 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::noOfGoodPairs
private

Definition at line 31 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::noOverlap
private

Definition at line 33 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::plane0
private

Definition at line 32 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::plane1
private

Definition at line 32 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::plane2
private

Definition at line 32 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::plane3
private

Definition at line 32 of file PndLmdPairFinderTask.h.

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

TClonesArray* PndLmdPairFinderTask::recoArray
protected

Definition at line 103 of file PndLmdPairFinderTask.h.

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

Int_t PndLmdPairFinderTask::sumOfPixelHits
private

Definition at line 35 of file PndLmdPairFinderTask.h.

Referenced by FinishTask(), and Init().

Int_t PndLmdPairFinderTask::unsuitable
private

Definition at line 36 of file PndLmdPairFinderTask.h.

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


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