#ifndef HParticleMetaMatcher_h
#define HParticleMetaMatcher_h
#include "hgeomtransform.h"
#include "hgeomvector.h"
#include "hreconstructor.h"
#include "hrpccluster.h"
#include "hemccluster.h"
#include "htofcluster.h"
#include "TVector3.h"
#include <vector>
#define EMCMAXCELL 163
#define RPCMAXCELL 31
using namespace std;
class HCategory;
class HGeomVector;
class HMetaMatchPar;
class HRpcGeomPar;
class HRpcGeomCellPar;
class HEmcGeomPar;
class HTofGeomPar;
class HParticleCand;
class HSpecGeomPar;
class HParticleMetaMatcher : public HReconstructor {
protected:
HCategory* fCatEmcCluster;
HCategory* fCatTofHit;
HCategory* fCatTofCluster;
HCategory* fCatRpcCluster;
HRpcGeomPar* fRpcGeometry;
HRpcGeomCellPar* pGeomCellPar;
HEmcGeomPar* fEmcGeometry;
HTofGeomPar* fTofGeometry;
HSpecGeomPar* pSpecGeomPar;
HGeomTransform labSecTrans[6];
HGeomTransform modSecTransRpc[6];
HGeomTransform modSecTransEmc[6];
HGeomTransform modSecTransTof[6][8];
TVector3 normVecRpc[6][3];
TVector3 normVecEmc[6];
TVector3 normVecTof[6][8];
TVector3 centerVecRpc[6][3];
TVector3 centerVecEmc[6];
TVector3 centerVecTof[6][8];
HGeomVector cellRPC[6][6][RPCMAXCELL][4];
HGeomVector cellEMC[6][EMCMAXCELL][4];
HGeomVector cellTOF[6][8][8][4];
Float_t DPlanesRpc;
HRpcCluster rpccluster;
HTofCluster tofcluster;
HEmcCluster emccluster;
HGeomVector trackMetaMod;
HGeomVector trackMetaSec;
HGeomVector trackMetaLab;
Bool_t fDebug;
void calcSegPoints(TVector3& p1,TVector3& p2,Double_t phiseg,Double_t thetaseg,Double_t roseg,Double_t zseg);
Bool_t findIntersectionLinePlane(TVector3 &pointIntersect,
const TVector3 &pos, const TVector3 &dir,
const TVector3 &planeCenter, const TVector3 &planeNormal);
Bool_t traceToMeta(const HParticleCand* cand,TVector3 &metaHit, const TVector3 &metaCenter, const TVector3 &metaNorm);
Bool_t isInRpcCell(HGeomVector& vmod,Int_t s,Int_t col,Int_t c);
Bool_t isInTofCell(HGeomVector& vmod,Int_t s,Int_t col,Int_t c);
Bool_t isInEmcCell(HGeomVector& vmod,Int_t s,Int_t c);
public:
HParticleMetaMatcher(const Text_t *name = "HParticleMetaMatcher",const Text_t *title ="HParticleMetaMatcher");
virtual ~HParticleMetaMatcher() { ; }
void setDebug(Bool_t debug=kTRUE) {fDebug = debug;}
const HRpcCluster* recalcRpc(HParticleCand* cand);
const HTofCluster* recalcTof(HParticleCand* cand);
const HEmcCluster* recalcEmc(HParticleCand* cand);
const HGeomVector& getTrackMetaMod() { return trackMetaMod;}
const HGeomVector& getTrackMetaSec() { return trackMetaSec;}
const HGeomVector& getTrackMetaLab() { return trackMetaLab;}
Bool_t predictRpcCell(HParticleCand* cand,HGeomVector& hit1,HGeomVector& hit2,Int_t& s,Int_t& col1,Int_t& cell1,Int_t& col2,Int_t& cell2);
Bool_t predictTofCell(HParticleCand* cand,HGeomVector& hit0,HGeomVector& hit1,Int_t& s,Int_t& mod0,Int_t& cell0,Int_t& mod1,Int_t& cell1);
Bool_t predictEmcCell(HParticleCand* cand,HGeomVector& hit,Int_t& s,Int_t& pos,Int_t& cell);
const HGeomVector* getRpcCellGeom(Int_t s,Int_t col,Int_t cell);
const HGeomVector* getTofCellGeom(Int_t s,Int_t mod,Int_t cell);
const HGeomVector* getEmcCellGeom(Int_t s,Int_t cell);
void getEmcCellArray(Int_t s,Int_t cell,vector<Int_t>& vcells);
Bool_t init ();
Bool_t reinit ();
Int_t execute() { return 0; }
Bool_t finalize() { return kTRUE; }
ClassDef(HParticleMetaMatcher,0)
};
#endif // HParticleMetaMatcher_h
hparticlemetamatcher.h:10 hparticlemetamatcher.h:11 hparticlemetamatcher.h:12 hparticlemetamatcher.h:13 hparticlemetamatcher.h:14 hparticlemetamatcher.h:15 hparticlemetamatcher.h:16 hparticlemetamatcher.h:17 hparticlemetamatcher.h:18 hparticlemetamatcher.h:19 hparticlemetamatcher.h:20 hparticlemetamatcher.h:21 hparticlemetamatcher.h:22 hparticlemetamatcher.h:23 hparticlemetamatcher.h:24 hparticlemetamatcher.h:25 hparticlemetamatcher.h:26 hparticlemetamatcher.h:27 hparticlemetamatcher.h:28 hparticlemetamatcher.h:29 hparticlemetamatcher.h:30 hparticlemetamatcher.h:31 hparticlemetamatcher.h:32 hparticlemetamatcher.h:33 hparticlemetamatcher.h:34 hparticlemetamatcher.h:35 hparticlemetamatcher.h:36 hparticlemetamatcher.h:37 hparticlemetamatcher.h:38 hparticlemetamatcher.h:39 hparticlemetamatcher.h:40 hparticlemetamatcher.h:41 hparticlemetamatcher.h:42 hparticlemetamatcher.h:43 hparticlemetamatcher.h:44 hparticlemetamatcher.h:45 hparticlemetamatcher.h:46 hparticlemetamatcher.h:47 hparticlemetamatcher.h:48 hparticlemetamatcher.h:49 hparticlemetamatcher.h:50 hparticlemetamatcher.h:51 hparticlemetamatcher.h:52 hparticlemetamatcher.h:53 hparticlemetamatcher.h:54 hparticlemetamatcher.h:55 hparticlemetamatcher.h:56 hparticlemetamatcher.h:57 hparticlemetamatcher.h:58 hparticlemetamatcher.h:59 hparticlemetamatcher.h:60 hparticlemetamatcher.h:61 hparticlemetamatcher.h:62 hparticlemetamatcher.h:63 hparticlemetamatcher.h:64 hparticlemetamatcher.h:65 hparticlemetamatcher.h:66 hparticlemetamatcher.h:67 hparticlemetamatcher.h:68 hparticlemetamatcher.h:69 hparticlemetamatcher.h:70 hparticlemetamatcher.h:71 hparticlemetamatcher.h:72 hparticlemetamatcher.h:73 hparticlemetamatcher.h:74 hparticlemetamatcher.h:75 hparticlemetamatcher.h:76 hparticlemetamatcher.h:77 hparticlemetamatcher.h:78 hparticlemetamatcher.h:79 hparticlemetamatcher.h:80 hparticlemetamatcher.h:81 hparticlemetamatcher.h:82 hparticlemetamatcher.h:83 hparticlemetamatcher.h:84 hparticlemetamatcher.h:85 hparticlemetamatcher.h:86 hparticlemetamatcher.h:87 hparticlemetamatcher.h:88 hparticlemetamatcher.h:89 hparticlemetamatcher.h:90 hparticlemetamatcher.h:91 hparticlemetamatcher.h:92 hparticlemetamatcher.h:93 hparticlemetamatcher.h:94 hparticlemetamatcher.h:95 hparticlemetamatcher.h:96 hparticlemetamatcher.h:97 hparticlemetamatcher.h:98 hparticlemetamatcher.h:99 hparticlemetamatcher.h:100 hparticlemetamatcher.h:101 hparticlemetamatcher.h:102 hparticlemetamatcher.h:103 hparticlemetamatcher.h:104 hparticlemetamatcher.h:105 hparticlemetamatcher.h:106 hparticlemetamatcher.h:107 hparticlemetamatcher.h:108 hparticlemetamatcher.h:109 hparticlemetamatcher.h:110 hparticlemetamatcher.h:111 hparticlemetamatcher.h:112 hparticlemetamatcher.h:113 hparticlemetamatcher.h:114 hparticlemetamatcher.h:115 hparticlemetamatcher.h:116 hparticlemetamatcher.h:117 hparticlemetamatcher.h:118 hparticlemetamatcher.h:119 hparticlemetamatcher.h:120 hparticlemetamatcher.h:121 hparticlemetamatcher.h:122 hparticlemetamatcher.h:123 hparticlemetamatcher.h:124 hparticlemetamatcher.h:125 hparticlemetamatcher.h:126 hparticlemetamatcher.h:127 hparticlemetamatcher.h:128