#ifndef HMDCCLUSTER_H
#define HMDCCLUSTER_H
#include "TObject.h"
#include "hmdclistgroupcells.h"
class HMdcClus;
class HMdcCluster : public TObject {
protected:
HMdcList12GroupCells lCells1;
HMdcList12GroupCells lCells2;
Char_t segment;
Int_t numCells1;
Int_t numCells2;
Int_t nLayers1;
Int_t nLayers2;
Bool_t status;
Char_t flag;
HMdcCluster* clusMerg;
Short_t nMergedClus;
Int_t nBins;
Int_t sumWt;
Int_t meanX;
Int_t meanY;
Int_t meanXX;
Int_t meanYY;
Int_t meanYX;
Int_t meanXWt;
Int_t meanYWt;
Int_t meanXXWt;
Int_t meanYYWt;
Int_t minWt;
Int_t iXFirst;
Int_t iYFirst;
Float_t x0;
Float_t y0;
Float_t xSt;
Float_t ySt;
UChar_t fakeFlag;
UChar_t realFlag;
Float_t x;
Float_t y;
Float_t errX;
Float_t errY;
Float_t sigma1;
Float_t sigma2;
Float_t alpha;
HMdcCluster* clusMod1;
HMdcCluster* clusMod2;
public:
HMdcCluster(void) {}
~HMdcCluster(void) {}
void init(Char_t seg,Float_t x,Float_t y,Float_t sx,Float_t sy);
void clearBinStat(void);
inline void addBin(Int_t nx,Int_t ny,UChar_t wt);
void calcXY(void);
void addClus(HMdcCluster& clst2);
void sumClus(HMdcCluster& clst1, HMdcCluster& clst2);
void calcClusParam(void);
void fillClus(HMdcClus* clus, Int_t nLst, Bool_t fillTrList);
void print(void);
void setModCluster(Int_t im, HMdcCluster* cl);
Char_t getSegment(void) const {return segment;}
HMdcCluster* getModCluster(Int_t im) {return im==0 ? clusMod1 :
clusMod2;}
HMdcCluster* getMod1Clus(void) {return clusMod1;}
HMdcCluster* getMod2Clus(void) {return clusMod2;}
Char_t getIOSeg(void) const {return segment;}
Int_t getNBins(void) const {return nBins;}
void setMod1Clus(HMdcCluster* cl) {clusMod1=cl;}
void setMod2Clus(HMdcCluster* cl) {clusMod2=cl;}
HMdcCluster* getClusMerg(void) const {return clusMerg;}
void setClusMerg(HMdcCluster* cl) {clusMerg=cl;}
void incFlag(void) {flag++;}
HMdcList12GroupCells& getLCells1(void) {return lCells1;}
HMdcList12GroupCells& getLCells2(void) {return lCells2;}
Bool_t getStatus(void) const {return status;}
Char_t getFlag(void) const {return flag;}
void setFlag(Char_t fl) {flag=fl;}
Float_t getX(void) const {return x;}
Float_t getY(void) const {return y;}
Int_t getMinWt(void) const {return minWt;}
Int_t getRealLevel(void) const {return minWt;}
Bool_t testForInclude(HMdcCluster& cl2);
Bool_t testForInc34CFnd(HMdcCluster& cl2);
Bool_t testNLayersSeg1(void);
Bool_t testNLayersSeg2(void);
void setFakeFlag(UChar_t fl) {fakeFlag = fl;}
UChar_t getFakeFlag(void) const {return fakeFlag;}
UChar_t &fakeFlagS(void) {return fakeFlag;}
UChar_t getRealFlag(void) const {return realFlag;}
UChar_t &realFlagS(void) {return realFlag;}
void setMod1ClusSkipMerg(HMdcCluster* clusM1);
void setMod2ClusSkipMerg(HMdcCluster* clusM2);
Bool_t isModClusNotTheSame(HMdcCluster& cls2);
protected:
void correctContend(Int_t iXf,Int_t iYf);
ClassDef(HMdcCluster,0)
};
inline void HMdcCluster::addBin(Int_t nx,Int_t ny,UChar_t wt) {
if(nBins == 0) {
iXFirst = nx;
iYFirst = ny;
minWt = wt;
} else {
nx -= iXFirst;
meanX += nx;
meanXWt += nx*wt;
meanXX += nx*nx;
meanXXWt += nx*nx*wt;
ny -= iYFirst;
meanY += ny;
meanYWt += ny*wt;
meanYY += ny*ny;
meanYYWt += ny*ny*wt;
meanYX += ny*nx;
if(wt<minWt) minWt = wt;
}
sumWt += wt;
nBins++;
}
class HMdcClustersArrs : public TObject {
protected:
static HMdcClustersArrs* pMdcClustersArrs;
HMdcCluster* clusArr[3];
Int_t arrSize[3];
Float_t dXWind1;
Float_t dYWind1;
Float_t dXWind2;
Float_t dYWind2;
public:
static HMdcClustersArrs* getExObject(void) {return pMdcClustersArrs;}
static HMdcClustersArrs* getObject(void);
static void deleteCont(void);
HMdcClustersArrs(void);
~HMdcClustersArrs(void);
Int_t createAllArrays(Int_t size=500);
HMdcCluster* createArray1(Int_t size=500) {return createArray(0,size);}
HMdcCluster* createArray2(Int_t size=500) {return createArray(1,size);}
HMdcCluster* createArray3(Int_t size=500) {return createArray(2,size);}
HMdcCluster* getArray1(void) {return clusArr[0];}
HMdcCluster* getArray2(void) {return clusArr[1];}
HMdcCluster* getArray3(void) {return clusArr[2];}
Int_t getArray1Size(void) {return arrSize[0];}
Int_t getArray2Size(void) {return arrSize[1];}
Int_t getArray3Size(void) {return arrSize[2];}
HMdcCluster* getArr1Cluster(Int_t ind) {return getCluster(0,ind);}
HMdcCluster* getArr2Cluster(Int_t ind) {return getCluster(1,ind);}
HMdcCluster* getArr3Cluster(Int_t ind) {return getCluster(2,ind);}
void setDXDYWindow(Float_t dx,
Float_t dy) {dXWind1 = dx; dYWind1 = dy;}
void setM34DXDYWindow(Float_t dx,
Float_t dy) {dXWind2 = dx; dYWind2 = dy;}
void testCluster(Int_t indArr,Int_t indClus);
void testMdc34Cluster(Int_t indArr,Int_t indClus);
protected:
HMdcCluster* createArray(Int_t ind,Int_t size);
HMdcCluster* getCluster(Int_t indarr,Int_t indClus);
ClassDef(HMdcClustersArrs,0)
};
#endif /*!HMDCCLUSTER_H*/
Last change: Sat May 22 13:01:11 2010
Last generated: 2010-05-22 13:01
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.