FairRoot/PandaRoot
Public Member Functions | Public Attributes | List of all members
dynamicCutHandler Struct Reference

#include <PndLmdAlignStructs.h>

Public Member Functions

 dynamicCutHandler ()
 
void addToSamples (PndLmdHitPair pair)
 
void calcMinAndMax ()
 
bool ready ()
 
double getMinDist ()
 
double getMaxDist ()
 

Public Attributes

int _overlapID
 
bool _ready
 
std::vector< double > samples
 
double _minDist
 
double _maxDist
 
double _hardMax
 
double _mean
 
double _RMS
 

Detailed Description

Definition at line 29 of file PndLmdAlignStructs.h.

Constructor & Destructor Documentation

dynamicCutHandler::dynamicCutHandler ( )
inline

Definition at line 37 of file PndLmdAlignStructs.h.

References _hardMax, _maxDist, _mean, _minDist, _overlapID, _ready, and _RMS.

37  {
38  _overlapID = 0;
39  _minDist = _maxDist = 0.0;
40  _hardMax = 32 * 80e-4; //sensors should not be farther than 32 pixels, 2,5mm!
41  _ready = false;
42  _mean = 0;
43  _RMS = 0;
44  }

Member Function Documentation

void dynamicCutHandler::addToSamples ( PndLmdHitPair  pair)
inline

Definition at line 46 of file PndLmdAlignStructs.h.

References _hardMax, _maxDist, _minDist, _overlapID, _ready, PndLmdHitPair::getDistance(), PndLmdHitPair::getOverlapId(), max(), min(), and samples.

Referenced by PndLmdPairFinderTask::Exec().

46  {
47 
48  //set first sample data
49  if (samples.size() == 0) {
50  _overlapID = pair.getOverlapId();
51  _minDist = pair.getDistance();
52  }
53  else {
54  if (_overlapID != pair.getOverlapId()) {
55  cout << "something is wrong! stored OverlapID does not match added ID!\n";
56  return;
57  }
58  }
59 
60  //100 should suffice, but more is always better
61  if (samples.size() > 150) {
62  _ready = true;
63  }
64 
65  double thisDistance = pair.getDistance();
66 
67  _minDist = std::min(_minDist, thisDistance);
68  _maxDist = std::max(_maxDist, std::min(thisDistance, _hardMax)); //never choose maximum higher than hardMax
69 
70  // store distance only if in valid range, some distances are too large
71  if (thisDistance >= _minDist && thisDistance <= _maxDist) {
72  samples.push_back(pair.getDistance());
73  }
74 
75  return;
76  }
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
Int_t getOverlapId() const
Double_t getDistance() const
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:25
std::vector< double > samples
void dynamicCutHandler::calcMinAndMax ( )
inline

Definition at line 78 of file PndLmdAlignStructs.h.

References _hardMax, _maxDist, _minDist, max(), min(), and samples.

Referenced by PndLmdPairFinderTask::FinishTask().

78  {
79 
80  // choose 80 percent confidence interval:
81  std::sort(samples.begin(), samples.end());
82  int quantileMargin = samples.size() / 10; // shave 10% from front and back
83 
84  vector<double>::const_iterator first = samples.begin() + quantileMargin;
85  vector<double>::const_iterator last = samples.end() - quantileMargin;
86  vector<double> confidenceInterval(first, last);
87 
88  _minDist = confidenceInterval[0];
89  _maxDist = confidenceInterval[confidenceInterval.size() - 1];
90 
91  // leave a little safety margin:
92  double spread = _maxDist - _minDist;
93  _minDist = std::max(0.0, confidenceInterval[0] - spread); //should not underflow 0
94  _maxDist = std::min(_hardMax, confidenceInterval[confidenceInterval.size() - 1] + spread); //should not overflow _hardMax
95 
96  return;
97 
98  }
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:25
std::vector< double > samples
double dynamicCutHandler::getMaxDist ( )
inline

Definition at line 107 of file PndLmdAlignStructs.h.

References _maxDist.

Referenced by PndLmdPairFinderTask::applyDynamicDistanceCut().

107  {
108  return _maxDist;
109  }
double dynamicCutHandler::getMinDist ( )
inline

Definition at line 104 of file PndLmdAlignStructs.h.

References _minDist.

Referenced by PndLmdPairFinderTask::applyDynamicDistanceCut().

104  {
105  return _minDist;
106  }
bool dynamicCutHandler::ready ( )
inline

Definition at line 100 of file PndLmdAlignStructs.h.

References _ready.

Referenced by PndLmdPairFinderTask::Exec().

100  {
101  return _ready;
102  }

Member Data Documentation

double dynamicCutHandler::_hardMax

Definition at line 35 of file PndLmdAlignStructs.h.

Referenced by addToSamples(), calcMinAndMax(), and dynamicCutHandler().

double dynamicCutHandler::_maxDist
double dynamicCutHandler::_mean

Definition at line 35 of file PndLmdAlignStructs.h.

Referenced by dynamicCutHandler(), and PndLmdPairFinderTask::FinishTask().

double dynamicCutHandler::_minDist
int dynamicCutHandler::_overlapID
bool dynamicCutHandler::_ready
double dynamicCutHandler::_RMS

Definition at line 35 of file PndLmdAlignStructs.h.

Referenced by dynamicCutHandler(), and PndLmdPairFinderTask::FinishTask().

std::vector<double> dynamicCutHandler::samples

The documentation for this struct was generated from the following file: