1#ifndef DotsHelixFitter_H
2#define DotsHelixFitter_H
33 void setT0(
double T0) {myEventT0=T0;};
35 void setDChits(vector<const MdcDigi*> aVecMdcDigi,
double T0);
39 void fitModeHelix() {myFitCircleOnly=
false; myUseAxialHitsOnly=
false;}
44 const HepSymMatrix &
getEa() {
return myHelix_Ea;};
86 return myRmidDGapCgem[i];
96 bool myUseAxialHitsOnly;
100 int myMinXhitsInCircleFit;
101 int myMinVhitsInHelixFit;
102 int myMinHitsInHelixFit;
103 double myDchi2Converge;
104 double myDchi2Diverge;
105 int myMaxNChi2Increase;
106 double myChi2Diverge;
116 double myPosOnWire[3];
117 double myPosOnTrk[3];
119 double myDocaFromTrk;
120 double myEntranceAngle;
121 double myFlightLength;
122 double myDocaFromDigi;
123 double myDriftDist[2];
124 double myDriftDistErr[2];
132 HepVector myHelix_aVec;
133 HepSymMatrix myHelix_Ea;
139 vector<const MdcDigi*> myVecMdcDigi;
140 vector<double> myDelDVecMdcDigi;
141 vector< vector<double> > myDerivVecMdcDigi;
142 vector<double> myChiVecMdcDigi;
143 vector<int> myAmbiguityMdcDigi;
144 vector<int> myMdcDigiIsActive;
145 int myNumMdcDigiPerLayer[43];
146 int myIdxMdcDigiNeighbour[43][2];
147 int myWireIdMdcDigiNeighbour[43][2];
150 vector<const RecCgemCluster*> myVecCgemCluster;
151 vector<int> myCgemClusterIsActive;
152 vector<double> myChiVecCgemCluster;
153 vector<const RecCgemCluster*> myVecCgemClusterX;
154 vector<const RecCgemCluster*> myVecCgemClusterV;
157 map<double, int> myMapFlylenIdx;
165 vector<double> myPhiWires[43];
166 vector<double> myTensionWires[43];
167 vector<double*> myEastPosWires[43];
168 vector<double*> myWestPosWires[43];
169 vector<double*> myPosWires[43];
170 vector<double*> myDirWires[43];
174 double myRmidDGapCgem[3];
175 double myR2midDGapCgem[3];
178 double myAngStereoCgem[3];
*********Class see also m_nmax DOUBLE PRECISION m_MasPhot DOUBLE PRECISION m_phsu DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_r2 DOUBLE PRECISION m_WtMass INTEGER m_nmax INTEGER m_Nevgen INTEGER m_IsFSR INTEGER m_MarTot *COMMON c_KarFin $ !Output file $ !Event serial number $ !alpha QED at Thomson limit $ !minimum energy at CMS for remooval $ !infrared cut
void setInitialHelix(KalmanFit::Helix aHelix)
void setChi2Diverge(double cut=1000000)
int deactiveHits(double chi_cut=10, int nMax=1)
int getLayer(const MdcDigi *aDcDigi)
void setDChits(vector< const MdcDigi * > aVecMdcDigi, double T0)
vector< const RecCgemCluster * > getVecCgemCluster()
vector< const MdcDigi * > getVecMdcDigi()
void setCgemClusters(vector< const RecCgemCluster * > aVecCgemCluster)
void setMinHitsInHelixFit(int n=5)
void useAxialHitsOnly(bool x=true)
DotsHelixFitter(KalmanFit::Helix iniHelix, vector< const MdcDigi * > vecMdcDigi, vector< const RecCgemCluster * > vecCgemCluster)
HepMatrix dxda_cgem(KalmanFit::Helix a, double phi)
void setMaxNChi2Increase(int n=2)
void calculateDocaFromTrk(const MdcDigi *aDcDigi)
void setDchi2Diverge(double cut=50)
void setDchi2Converge(double cut=5)
void setMinVhitsInHelixFit(int n=2)
double getRmidGapCgem(int i)
vector< double > getVecChiCgemCluster()
const HepSymMatrix & getEa()
KalmanFit::Helix getClassHelix()
void setMaxIterations(int n=10)
void fitCircleOnly(bool x=true)
void setMinXhitsInCircleFit(int n=3)
double getFlightLength(const MdcDigi *aDcDigi)
void loadOneDcDigi(const MdcDigi *aDcDigi)
vector< RecMdcHit > makeRecMdcHitVec(int sel=1)
RecMdcHit makeRecMdcHit(const MdcDigi *aDcDigi)
void calculateInitialHelix()
vector< double > getVecChiMdcDigi()
vector< int > getVecMdcDigiIsAct()
double IntersectCylinder(double r)
void updateDcDigiInfo(const MdcDigi *aDcDigi)
double getDocaFromTrk(const MdcDigi *aDcDigi)
int activeHits(double chi_cut=10)
vector< int > getVecIsActiveCgemCluster()