#ifndef HRICH700RINGFINDERHOUGH
#define HRICH700RINGFINDERHOUGH
#include "hrich700ringfittercop.h"
#include "hlocation.h"
#include "hreconstructor.h"
#include "hcategory.h"
#include "hiterator.h"
#include "hgeantrich.h"
#include "hrichcalsim.h"
#include <vector>
#include <map>
#include <functional>
using std::vector;
class HRich700HoughHit {
public:
HRich700HoughHit():
fX(0.),
fY(0.),
fX2plusY2(0.f),
fId(0),
fIsUsed(kTRUE)
{ }
virtual ~HRich700HoughHit(){}
Float_t fX;
Float_t fY;
Float_t fX2plusY2;
UShort_t fId;
Bool_t fIsUsed;
};
class HRich700HoughHitCmpUp:
public std::binary_function<
const HRich700HoughHit,
const HRich700HoughHit,
bool>
{
public:
virtual ~HRich700HoughHitCmpUp(){}
bool operator()(
const HRich700HoughHit &m1,
const HRich700HoughHit &m2) const
{
return m1.fX < m2.fX;
}
};
class HRich700RingComparatorMore: public std::binary_function< const HRich700Ring, const HRich700Ring, bool>
{
public:
virtual ~HRich700RingComparatorMore(){}
bool operator()(
const HRich700Ring& ring1,
const HRich700Ring& ring2) const
{
return ring1.fHits.size() > ring2.fHits.size();
}
};
class HRich700DigiPar;
class HRich700RingFinderPar;
class HRich700RingFinderHough : public HReconstructor
{
protected:
static const UShort_t MAX_NOF_HITS = 65000;
UShort_t fNofParts;
Float_t fMaxDistance;
Float_t fMinDistance;
Float_t fMinDistanceSq;
Float_t fMaxDistanceSq;
Float_t fMinRadius;
Float_t fMaxRadius;
Float_t fDx;
Float_t fDy;
Float_t fDr;
UShort_t fNofBinsX;
UShort_t fNofBinsY;
UShort_t fNofBinsXY;
UShort_t fHTCut;
UShort_t fNofBinsR;
UShort_t fHTCutR;
UShort_t fMinNofHitsInArea;
Float_t fUsedHitsAllCut;
Float_t fRmsCoeffCOP;
Float_t fMaxCutCOP;
Float_t fCurMinX;
Float_t fCurMinY;
vector<HRich700HoughHit> fData;
vector<UShort_t> fHist;
vector<UShort_t> fHistR;
vector< vector<UShort_t> > fHitInd;
vector<HRich700Ring> fFoundRings;
HCategory* fCatRichCal;
HCategory* fCatRichHit;
HRich700DigiPar* fDigiPar;
HRich700RingFinderPar* fRingPar;
Int_t fEventNum;
Bool_t fIsSimulation ;
void processEvent();
public:
Bool_t init();
Bool_t reinit();
Int_t execute();
Bool_t finalize();
HRich700RingFinderHough (const Text_t* name ="Rich700RingFinderHough", const Text_t* title= "Rich700RingFinderHough");
virtual ~HRich700RingFinderHough();
void setParameters();
virtual void HoughTransformReconstruction();
virtual void DefineLocalAreaAndHits( Float_t x0, Float_t y0, Int_t *indmin, Int_t *indmax);
virtual void HoughTransform( UShort_t indmin, UShort_t indmax);
virtual void HoughTransformGroup(UShort_t indmin,UShort_t indmax,Int_t iPart);
void FindPeak( Int_t indmin,Int_t indmax);
void RemoveHitsOfFoundRing(Int_t indmin, Int_t indmax, HRich700Ring* ring);
void RingSelection();
void AddRing(HRich700Ring* ring);
void RecoToMc(const HRich700Ring* ring, Int_t * trackIds, Int_t * weights);
private:
HRich700RingFinderHough(const HRich700RingFinderHough&);
HRich700RingFinderHough& operator=(const HRich700RingFinderHough&);
public:
ClassDef(HRich700RingFinderHough, 0)
};
#endif
hrich700ringfinderhough.h:1 hrich700ringfinderhough.h:2 hrich700ringfinderhough.h:3 hrich700ringfinderhough.h:4 hrich700ringfinderhough.h:5 hrich700ringfinderhough.h:6 hrich700ringfinderhough.h:7 hrich700ringfinderhough.h:8 hrich700ringfinderhough.h:9 hrich700ringfinderhough.h:10 hrich700ringfinderhough.h:11 hrich700ringfinderhough.h:12 hrich700ringfinderhough.h:13 hrich700ringfinderhough.h:14 hrich700ringfinderhough.h:15 hrich700ringfinderhough.h:16 hrich700ringfinderhough.h:17 hrich700ringfinderhough.h:18 hrich700ringfinderhough.h:19 hrich700ringfinderhough.h:20 hrich700ringfinderhough.h:21 hrich700ringfinderhough.h:22 hrich700ringfinderhough.h:23 hrich700ringfinderhough.h:24 hrich700ringfinderhough.h:25 hrich700ringfinderhough.h:26 hrich700ringfinderhough.h:27 hrich700ringfinderhough.h:28 hrich700ringfinderhough.h:29 hrich700ringfinderhough.h:30 hrich700ringfinderhough.h:31 hrich700ringfinderhough.h:32 hrich700ringfinderhough.h:33 hrich700ringfinderhough.h:34 hrich700ringfinderhough.h:35 hrich700ringfinderhough.h:36 hrich700ringfinderhough.h:37 hrich700ringfinderhough.h:38 hrich700ringfinderhough.h:39 hrich700ringfinderhough.h:40 hrich700ringfinderhough.h:41 hrich700ringfinderhough.h:42 hrich700ringfinderhough.h:43 hrich700ringfinderhough.h:44 hrich700ringfinderhough.h:45 hrich700ringfinderhough.h:46 hrich700ringfinderhough.h:47 hrich700ringfinderhough.h:48 hrich700ringfinderhough.h:49 hrich700ringfinderhough.h:50 hrich700ringfinderhough.h:51 hrich700ringfinderhough.h:52 hrich700ringfinderhough.h:53 hrich700ringfinderhough.h:54 hrich700ringfinderhough.h:55 hrich700ringfinderhough.h:56 hrich700ringfinderhough.h:57 hrich700ringfinderhough.h:58 hrich700ringfinderhough.h:59 hrich700ringfinderhough.h:60 hrich700ringfinderhough.h:61 hrich700ringfinderhough.h:62 hrich700ringfinderhough.h:63 hrich700ringfinderhough.h:64 hrich700ringfinderhough.h:65 hrich700ringfinderhough.h:66 hrich700ringfinderhough.h:67 hrich700ringfinderhough.h:68 hrich700ringfinderhough.h:69 hrich700ringfinderhough.h:70 hrich700ringfinderhough.h:71 hrich700ringfinderhough.h:72 hrich700ringfinderhough.h:73 hrich700ringfinderhough.h:74 hrich700ringfinderhough.h:75 hrich700ringfinderhough.h:76 hrich700ringfinderhough.h:77 hrich700ringfinderhough.h:78 hrich700ringfinderhough.h:79 hrich700ringfinderhough.h:80 hrich700ringfinderhough.h:81 hrich700ringfinderhough.h:82 hrich700ringfinderhough.h:83 hrich700ringfinderhough.h:84 hrich700ringfinderhough.h:85 hrich700ringfinderhough.h:86 hrich700ringfinderhough.h:87 hrich700ringfinderhough.h:88 hrich700ringfinderhough.h:89 hrich700ringfinderhough.h:90 hrich700ringfinderhough.h:91 hrich700ringfinderhough.h:92 hrich700ringfinderhough.h:93 hrich700ringfinderhough.h:94 hrich700ringfinderhough.h:95 hrich700ringfinderhough.h:96 hrich700ringfinderhough.h:97 hrich700ringfinderhough.h:98 hrich700ringfinderhough.h:99 hrich700ringfinderhough.h:100 hrich700ringfinderhough.h:101 hrich700ringfinderhough.h:102 hrich700ringfinderhough.h:103 hrich700ringfinderhough.h:104 hrich700ringfinderhough.h:105 hrich700ringfinderhough.h:106 hrich700ringfinderhough.h:107 hrich700ringfinderhough.h:108 hrich700ringfinderhough.h:109 hrich700ringfinderhough.h:110 hrich700ringfinderhough.h:111 hrich700ringfinderhough.h:112 hrich700ringfinderhough.h:113 hrich700ringfinderhough.h:114 hrich700ringfinderhough.h:115 hrich700ringfinderhough.h:116 hrich700ringfinderhough.h:117 hrich700ringfinderhough.h:118 hrich700ringfinderhough.h:119 hrich700ringfinderhough.h:120 hrich700ringfinderhough.h:121 hrich700ringfinderhough.h:122 hrich700ringfinderhough.h:123 hrich700ringfinderhough.h:124 hrich700ringfinderhough.h:125 hrich700ringfinderhough.h:126 hrich700ringfinderhough.h:127 hrich700ringfinderhough.h:128 hrich700ringfinderhough.h:129 hrich700ringfinderhough.h:130 hrich700ringfinderhough.h:131 hrich700ringfinderhough.h:132 hrich700ringfinderhough.h:133 hrich700ringfinderhough.h:134 hrich700ringfinderhough.h:135 hrich700ringfinderhough.h:136 hrich700ringfinderhough.h:137 hrich700ringfinderhough.h:138 hrich700ringfinderhough.h:139 hrich700ringfinderhough.h:140 hrich700ringfinderhough.h:141 hrich700ringfinderhough.h:142 hrich700ringfinderhough.h:143 hrich700ringfinderhough.h:144 hrich700ringfinderhough.h:145 hrich700ringfinderhough.h:146 hrich700ringfinderhough.h:147 hrich700ringfinderhough.h:148 hrich700ringfinderhough.h:149 hrich700ringfinderhough.h:150 hrich700ringfinderhough.h:151 hrich700ringfinderhough.h:152 hrich700ringfinderhough.h:153 hrich700ringfinderhough.h:154 hrich700ringfinderhough.h:155 hrich700ringfinderhough.h:156 hrich700ringfinderhough.h:157 hrich700ringfinderhough.h:158 hrich700ringfinderhough.h:159 hrich700ringfinderhough.h:160 hrich700ringfinderhough.h:161 hrich700ringfinderhough.h:162 hrich700ringfinderhough.h:163 hrich700ringfinderhough.h:164 hrich700ringfinderhough.h:165 hrich700ringfinderhough.h:166 hrich700ringfinderhough.h:167 hrich700ringfinderhough.h:168 hrich700ringfinderhough.h:169