#ifndef __HPARTICLEBTCLUSTERF_H__
#define __HPARTICLEBTCLUSTERF_H__
#include "TObject.h"
class HParticleBtPar;
class HParticleBtRingF;
class TF2;
class HVertex;
class HParticleBtRingInfo;
using namespace std;
class HParticleBtClusterF : public TObject {
protected:
HParticleBtPar* fBtPar;
HParticleBtRingF* fRing;
Int_t fPadUp;
Int_t fPadUpRight;
Int_t fPadRight;
Int_t fPadDownRight;
Int_t fPadDown;
Int_t fPadDownLeft;
Int_t fPadLeft;
Int_t fPadUpLeft;
Float_t fChargeLimit[6];
Float_t fChargeLimitMaximum[6];
Float_t fPadWidthX;
Float_t fPadWidthY;
Float_t fNSigma;
Float_t fMaxSigmaRange;
Float_t fMaxSigmaRangeSmall;
Float_t fSigmaErrorPad;
UInt_t fNMaxLimit;
UInt_t fClusSizeLimit;
Float_t fMinimumSigmaValue;
Int_t fMaximumType;
Float_t fSigmaGaus[2];
Float_t fSigmaGausRange[2];
Float_t fChargeDiagonalPar[3];
Float_t fChargeVerticalPar[3];
Float_t fChargeHorizontalPar[3];
Float_t fPhiOff[6];
Float_t fPhiOff2[6];
Int_t fPhiOffsetPar;
Int_t fNRingSeg;
Int_t fNRingSegStep;
Int_t fNRingSegOffset;
Int_t fNVertex;
Int_t fNParMean;
Int_t fNParSigma;
Float_t fParThetaAngleMin;
Float_t fParThetaAngleMax;
vector <vector <TF2*> > fPol2DMean;
vector <vector <TF2*> > fPol2DSigma;
vector <Float_t> fRad2Deg;
vector <Float_t> fRad2DegX;
vector <Float_t> fRad2DegY;
vector<Int_t> fIsInCluster;
vector<vector <Int_t> > fClusTrackNoShared;
vector<Bool_t> fClusIsGood;
vector<Int_t> fClusPadSum;
vector<Int_t> fClusPadRing;
vector<Float_t> fClusChargeSum;
vector<Float_t> fClusChargeRing;
vector<Float_t> fClusPosX;
vector<Float_t> fClusPosY;
vector<Int_t> fClusClass;
vector<vector <Int_t> > fClusNMaxima;
vector<vector <vector <Int_t> > > fClusNMaximaPad;
vector<vector <vector <Float_t> > > fClusNMaximaPosX;
vector<vector <vector <Float_t> > > fClusNMaximaPosY;
vector<vector <vector <Float_t> > > fClusChi2;
vector<vector <vector <Float_t> > > fClusChi2XMM;
vector<vector <vector <Float_t> > > fClusChi2YMM;
vector<vector <vector <Float_t> > > fClusCircleX;
vector<vector <vector <Float_t> > > fClusCircleY;
vector<vector <vector <Float_t> > > fClusSig1X;
vector<vector <vector <Float_t> > > fClusSig1Y;
vector<vector <vector <Float_t> > > fClusSig2X;
vector<vector <vector <Float_t> > > fClusSig2Y;
vector < vector<Int_t> >* fPrediction;
vector <Int_t> * fRichHitAdd;
vector <Float_t> * fRichHitCharge;
vector <Float_t> fRingMeanDistX;
vector <Float_t> fRingMeanDistY;
public:
HParticleBtClusterF(void);
~HParticleBtClusterF(void);
Bool_t init(void);
void setRingF(HParticleBtRingF* ring);
void calcCluster(Int_t trackNo);
void noHitFound();
void clearCluster(void);
Int_t getPadsRing( const Int_t trackNo);
Int_t getPadsSum( const Int_t trackNo);
Float_t getChargeRing(const Int_t trackNo);
Float_t getChargeSum( const Int_t trackNo);
Int_t getNClusters( const Int_t trackNo);
Int_t getMaxima( const Int_t trackNo);
Float_t getMaximaCharge(const Int_t trackNo);
Int_t getNearbyMaxima(const Int_t trackNo);
Float_t getChi2Value( const Int_t trackNo);
Float_t getChi2ValuePrimary(const Int_t trackNo);
Int_t getMaximaShared( const Int_t trackNo);
Int_t getMaximaSharedBad( const Int_t trackNo);
Int_t getMaximaSharedTrack( const Int_t trackNo, const Int_t trackNo2);
Int_t getMaximaSharedBadTrack( const Int_t trackNo, const Int_t trackNo2);
Float_t getMaximaChargeShared( const Int_t trackNo);
Float_t getMaximaChargeSharedTrack(const Int_t trackNo, const Int_t trackNo2);
Float_t getMaximaChargeSharedBad( const Int_t trackNo);
Float_t getMaximaChargeSharedBadTrack(const Int_t trackNo, const Int_t trackNo2);
Int_t getNearbyMaximaShared( const Int_t trackNo);
Int_t getNearbyMaximaSharedTrack(const Int_t trackNo, const Int_t trackNo2);
Float_t getMeanDistX(const Int_t trackNo);
Float_t getMeanDistY(const Int_t trackNo);
Float_t getMeanDist( const Int_t trackNo);
Bool_t fillRingInfo(HParticleBtRingInfo* BtRingInfo);
private:
void addressToColRow(const Int_t address, Int_t &sec, Int_t &row, Int_t &col);
Float_t getPadCharge(const Int_t pos);
Int_t getShared(const Int_t trackNo,const Int_t clusNum, const Float_t sigmaRange, const Bool_t trackType, const Int_t trackNo2);
Float_t getSharedCharge(const Int_t trackNo,const Int_t clusNum, const Float_t sigmaRange, const Bool_t trackType, const Int_t trackNo2);
void addressIsShared(Int_t address);
Float_t sharedChargeDiagonal(const Float_t maximumCharge);
Float_t sharedChargeVertical(const Float_t maximumCharge);
Float_t sharedChargeHorizontal(const Float_t maximumCharge);
void findNeighbour( const Int_t trackNo, const Int_t address);
void fillCluster(const Int_t trackNo, const UInt_t beginclus);
void nMaxima(const Int_t trackNo, const UInt_t beginclus);
void fitMaximaPos(const UInt_t beginclus);
void calcChi2(const Int_t trackNo);
void setGoodClus(void);
void findClusterShape(const UInt_t beginclus);
void calcRingShift(const Int_t trackNo);
ClassDef(HParticleBtClusterF, 0)
};
#endif // __HPARTICLEBTCLUSTER_H__
hparticlebtclusterf.h:100 hparticlebtclusterf.h:101 hparticlebtclusterf.h:102 hparticlebtclusterf.h:103 hparticlebtclusterf.h:104 hparticlebtclusterf.h:105 hparticlebtclusterf.h:106 hparticlebtclusterf.h:107 hparticlebtclusterf.h:108 hparticlebtclusterf.h:109 hparticlebtclusterf.h:110 hparticlebtclusterf.h:111 hparticlebtclusterf.h:112 hparticlebtclusterf.h:113 hparticlebtclusterf.h:114 hparticlebtclusterf.h:115 hparticlebtclusterf.h:116 hparticlebtclusterf.h:117 hparticlebtclusterf.h:118 hparticlebtclusterf.h:119 hparticlebtclusterf.h:120 hparticlebtclusterf.h:121 hparticlebtclusterf.h:122 hparticlebtclusterf.h:123 hparticlebtclusterf.h:124 hparticlebtclusterf.h:125 hparticlebtclusterf.h:126 hparticlebtclusterf.h:127 hparticlebtclusterf.h:128 hparticlebtclusterf.h:129 hparticlebtclusterf.h:130 hparticlebtclusterf.h:131 hparticlebtclusterf.h:132 hparticlebtclusterf.h:133 hparticlebtclusterf.h:134 hparticlebtclusterf.h:135 hparticlebtclusterf.h:136 hparticlebtclusterf.h:137 hparticlebtclusterf.h:138 hparticlebtclusterf.h:139 hparticlebtclusterf.h:140 hparticlebtclusterf.h:141 hparticlebtclusterf.h:142 hparticlebtclusterf.h:143 hparticlebtclusterf.h:144 hparticlebtclusterf.h:145 hparticlebtclusterf.h:146 hparticlebtclusterf.h:147 hparticlebtclusterf.h:148 hparticlebtclusterf.h:149 hparticlebtclusterf.h:150 hparticlebtclusterf.h:151 hparticlebtclusterf.h:152 hparticlebtclusterf.h:153 hparticlebtclusterf.h:154 hparticlebtclusterf.h:155 hparticlebtclusterf.h:156 hparticlebtclusterf.h:157 hparticlebtclusterf.h:158 hparticlebtclusterf.h:159 hparticlebtclusterf.h:160 hparticlebtclusterf.h:161 hparticlebtclusterf.h:162 hparticlebtclusterf.h:163 hparticlebtclusterf.h:164 hparticlebtclusterf.h:165 hparticlebtclusterf.h:166 hparticlebtclusterf.h:167 hparticlebtclusterf.h:168 hparticlebtclusterf.h:169 hparticlebtclusterf.h:170 hparticlebtclusterf.h:171 hparticlebtclusterf.h:172 hparticlebtclusterf.h:173 hparticlebtclusterf.h:174 hparticlebtclusterf.h:175 hparticlebtclusterf.h:176 hparticlebtclusterf.h:177 hparticlebtclusterf.h:178 hparticlebtclusterf.h:179 hparticlebtclusterf.h:180 hparticlebtclusterf.h:181 hparticlebtclusterf.h:182 hparticlebtclusterf.h:183 hparticlebtclusterf.h:184 hparticlebtclusterf.h:185 hparticlebtclusterf.h:186 hparticlebtclusterf.h:187 hparticlebtclusterf.h:188 hparticlebtclusterf.h:189 hparticlebtclusterf.h:190 hparticlebtclusterf.h:191 hparticlebtclusterf.h:192 hparticlebtclusterf.h:193 hparticlebtclusterf.h:194 hparticlebtclusterf.h:195 hparticlebtclusterf.h:196 hparticlebtclusterf.h:197 hparticlebtclusterf.h:198 hparticlebtclusterf.h:199 hparticlebtclusterf.h:200 hparticlebtclusterf.h:201