ROOT logo
#ifndef HMDCCLUSMETAMATCH_H
#define HMDCCLUSMETAMATCH_H
#include "TObject.h"
#include "hgeomtransform.h"
#include "hmdcgeomobj.h"

class HCategory;
class HTofHit;
class HIterator;
class HTofGeomPar;
class HRpcGeomPar;
class HShowerGeometry;
class HEmcGeomPar;
class HMetaMatchPar;
class TH2F;

class HMdcClusMetaMatch : public TObject {
  private:
    HTofGeomPar     *pTofGeometry;
    HCategory       *pCatTof;
    HIterator       *iterTof;
    HCategory       *pCatTofCluster;
    HIterator       *iterTofCluster;
    
    HRpcGeomPar     *pRpcGeometry;
    HCategory       *pCatRpc;
    HIterator       *iterRpc;
    
    HShowerGeometry *pShrGeometry;
    HCategory       *pCatShower;
    HIterator       *iterShower;
  
    HEmcGeomPar     *fEmcGeometry;    // Emc geometry
    HCategory       *fCatEmc;         // pointer to the Emc category

    // Matching cut parameters (for 6 sectors):
    HMetaMatchPar   *pMatchPar;
    Float_t          qualityMulp2;        // Incr.qual.cut by sqrt(qualityMulp2)
    Float_t          sigma2TofXi[6];      // =1./sigmaTofX^2
    Float_t          sigma2TofYi[6];
    Float_t          offsetTofX[6];
    Float_t          offsetTofY[6];
    Float_t          quality2TofCut[6];
    
    Float_t          sigma2RpcX[6];
    Float_t          sigma2RpcY[6];
    Float_t          offsetRpcX[6];
    Float_t          offsetRpcY[6];
    Float_t          quality2RpcCut[6];
    
    Float_t          sigma2ShrX[6];
    Float_t          sigma2ShrY[6];
    Float_t          offsetShrX[6];
    Float_t          offsetShrY[6];
    Float_t          quality2ShrCut[6];
    
    Float_t          sigma2EmcX[6];
    Float_t          sigma2EmcY[6];
    Float_t          offsetEmcX[6];
    Float_t          offsetEmcY[6];
    Float_t          quality2EmcCut[6];
    
    Double_t         rpcSecModTrans[6][12];      // One module is used only
    Double_t         shrSecModTrans[6][12];      // One module is used only
    Double_t         tofSecModTrans[6][8][12];
    Double_t         tofLabModTrans[6][8][12];
    
    // One event collection of meta hits:
    struct TofHit {
      Float_t x;
      Float_t y;
      UChar_t mod;
    };
    struct RpcHit {
      Float_t x;
      Float_t y;
      Float_t z;
      Float_t xSigma2i;
      Float_t ySigma2i;
    };
    struct ShowerHit {
      Float_t x;
      Float_t y;
      Float_t z;
      Float_t xSigma2i;
      Float_t ySigma2i;
    };

    UInt_t           nRpcHits[6];    
    RpcHit           rpcHitArr[6][200];
    UInt_t           nShowerHits[6];     // It is used for EMC also 
    ShowerHit        shrHitArr[6][200];  // It is used for EMC also 
    UInt_t           nTofHits[6];
    TofHit           tofHitArr[6][100];
    
    Bool_t           fillPlots;
    TH2F*            rpcPlots[6];
    TH2F*            shrPlots[6];
    TH2F*            tofPlots[6];
    
  public:
    HMdcClusMetaMatch(void);
    ~HMdcClusMetaMatch();
    Bool_t init(void);
    Bool_t reinit(void);
    void   setFillPlotsFlag(void)          {fillPlots = kTRUE;}
    void   collectMetaHits(void);
    Bool_t hasClusMathToMeta(Int_t sec,const HGeomVector& targ,
                             Double_t xcl,Double_t ycl,Double_t zcl);
    TH2F*  getRpcPlot(Int_t s)             {return rpcPlots[s];}
    TH2F*  getShrPlot(Int_t s)             {return shrPlots[s];}
    TH2F*  getTofPlot(Int_t s)             {return tofPlots[s];}
    void   deletePlots(void);
    void   savePlots(void);
    void   setQualMultp(Float_t mp)         {qualityMulp2 = mp*mp;}
    
  private:
    void   setInitParam(void);
    void   collectRpcClusters(void);
    void   collectShowerHits(void);
    void   collectEmcClusters(void);
    void   collectTofHits(void);
    void   addTofHit(HTofHit* pTofHit);
    Bool_t testAndFill(Int_t sec,const HGeomVector& targ,
                       Double_t xcl,Double_t ycl,Double_t zcl);
      
  ClassDef(HMdcClusMetaMatch,0)
};

#endif
 hmdcclusmetamatch.h:1
 hmdcclusmetamatch.h:2
 hmdcclusmetamatch.h:3
 hmdcclusmetamatch.h:4
 hmdcclusmetamatch.h:5
 hmdcclusmetamatch.h:6
 hmdcclusmetamatch.h:7
 hmdcclusmetamatch.h:8
 hmdcclusmetamatch.h:9
 hmdcclusmetamatch.h:10
 hmdcclusmetamatch.h:11
 hmdcclusmetamatch.h:12
 hmdcclusmetamatch.h:13
 hmdcclusmetamatch.h:14
 hmdcclusmetamatch.h:15
 hmdcclusmetamatch.h:16
 hmdcclusmetamatch.h:17
 hmdcclusmetamatch.h:18
 hmdcclusmetamatch.h:19
 hmdcclusmetamatch.h:20
 hmdcclusmetamatch.h:21
 hmdcclusmetamatch.h:22
 hmdcclusmetamatch.h:23
 hmdcclusmetamatch.h:24
 hmdcclusmetamatch.h:25
 hmdcclusmetamatch.h:26
 hmdcclusmetamatch.h:27
 hmdcclusmetamatch.h:28
 hmdcclusmetamatch.h:29
 hmdcclusmetamatch.h:30
 hmdcclusmetamatch.h:31
 hmdcclusmetamatch.h:32
 hmdcclusmetamatch.h:33
 hmdcclusmetamatch.h:34
 hmdcclusmetamatch.h:35
 hmdcclusmetamatch.h:36
 hmdcclusmetamatch.h:37
 hmdcclusmetamatch.h:38
 hmdcclusmetamatch.h:39
 hmdcclusmetamatch.h:40
 hmdcclusmetamatch.h:41
 hmdcclusmetamatch.h:42
 hmdcclusmetamatch.h:43
 hmdcclusmetamatch.h:44
 hmdcclusmetamatch.h:45
 hmdcclusmetamatch.h:46
 hmdcclusmetamatch.h:47
 hmdcclusmetamatch.h:48
 hmdcclusmetamatch.h:49
 hmdcclusmetamatch.h:50
 hmdcclusmetamatch.h:51
 hmdcclusmetamatch.h:52
 hmdcclusmetamatch.h:53
 hmdcclusmetamatch.h:54
 hmdcclusmetamatch.h:55
 hmdcclusmetamatch.h:56
 hmdcclusmetamatch.h:57
 hmdcclusmetamatch.h:58
 hmdcclusmetamatch.h:59
 hmdcclusmetamatch.h:60
 hmdcclusmetamatch.h:61
 hmdcclusmetamatch.h:62
 hmdcclusmetamatch.h:63
 hmdcclusmetamatch.h:64
 hmdcclusmetamatch.h:65
 hmdcclusmetamatch.h:66
 hmdcclusmetamatch.h:67
 hmdcclusmetamatch.h:68
 hmdcclusmetamatch.h:69
 hmdcclusmetamatch.h:70
 hmdcclusmetamatch.h:71
 hmdcclusmetamatch.h:72
 hmdcclusmetamatch.h:73
 hmdcclusmetamatch.h:74
 hmdcclusmetamatch.h:75
 hmdcclusmetamatch.h:76
 hmdcclusmetamatch.h:77
 hmdcclusmetamatch.h:78
 hmdcclusmetamatch.h:79
 hmdcclusmetamatch.h:80
 hmdcclusmetamatch.h:81
 hmdcclusmetamatch.h:82
 hmdcclusmetamatch.h:83
 hmdcclusmetamatch.h:84
 hmdcclusmetamatch.h:85
 hmdcclusmetamatch.h:86
 hmdcclusmetamatch.h:87
 hmdcclusmetamatch.h:88
 hmdcclusmetamatch.h:89
 hmdcclusmetamatch.h:90
 hmdcclusmetamatch.h:91
 hmdcclusmetamatch.h:92
 hmdcclusmetamatch.h:93
 hmdcclusmetamatch.h:94
 hmdcclusmetamatch.h:95
 hmdcclusmetamatch.h:96
 hmdcclusmetamatch.h:97
 hmdcclusmetamatch.h:98
 hmdcclusmetamatch.h:99
 hmdcclusmetamatch.h:100
 hmdcclusmetamatch.h:101
 hmdcclusmetamatch.h:102
 hmdcclusmetamatch.h:103
 hmdcclusmetamatch.h:104
 hmdcclusmetamatch.h:105
 hmdcclusmetamatch.h:106
 hmdcclusmetamatch.h:107
 hmdcclusmetamatch.h:108
 hmdcclusmetamatch.h:109
 hmdcclusmetamatch.h:110
 hmdcclusmetamatch.h:111
 hmdcclusmetamatch.h:112
 hmdcclusmetamatch.h:113
 hmdcclusmetamatch.h:114
 hmdcclusmetamatch.h:115
 hmdcclusmetamatch.h:116
 hmdcclusmetamatch.h:117
 hmdcclusmetamatch.h:118
 hmdcclusmetamatch.h:119
 hmdcclusmetamatch.h:120
 hmdcclusmetamatch.h:121
 hmdcclusmetamatch.h:122
 hmdcclusmetamatch.h:123
 hmdcclusmetamatch.h:124
 hmdcclusmetamatch.h:125
 hmdcclusmetamatch.h:126
 hmdcclusmetamatch.h:127
 hmdcclusmetamatch.h:128
 hmdcclusmetamatch.h:129
 hmdcclusmetamatch.h:130