ROOT logo
#ifndef __HShowerHit_H
#define __HShowerHit_H
#pragma interface

//*-- AUTHOR : Leszek Kidon
//*-- Modified : 02/06/06 by Jacek Otwinowski
//    setTrueAddress() and getTrueAddress() functions added

#include "TObject.h"

class HShowerHit : public TObject {
public:
        HShowerHit(){clear();}
        HShowerHit(const Float_t fCharge){clear();m_fCharge=fCharge;}
       ~HShowerHit() {}

        Int_t clear();
	inline Int_t calcAddress() const {
	    Char_t s = (m_nSector) ? m_nSector : 6;
	    return 100000 * s + 10000 * m_nModule + 100 * m_nRow + m_nCol;
	}

        Int_t  getAddress(void) {return calcAddress();}
        Char_t getSector(void) {return m_nSector;}
        Char_t getModule(void) {return m_nModule;}
        Char_t getRow(void) {return m_nRow;}
        Char_t getCol(void) {return m_nCol;}

        Float_t getSum(Int_t i);
        Float_t getSum25(){return m_fSum2_25;}
        Float_t getSumN(){return m_fSum2_N;}
        Float_t getVar(Int_t i);
        Int_t   getClusterSize(Int_t i);
        Float_t getLocalMax(){return m_fLocalMax;}
        void    getXY(Float_t *px, Float_t *py){*px = m_fX; *py = m_fY;}
        Float_t getZ(); 

        void    getSigmaXY(Float_t *px, Float_t *py){*px = m_fSigmaX; *py = m_fSigmaY;}
        Float_t getSigmaX(){return m_fSigmaX;}
        Float_t getSigmaY(){return m_fSigmaY;}
        void    getLabXYZ(Float_t *px, Float_t *py, Float_t *pz) {*px = m_fLabX; *py = m_fLabY;*pz = m_fLabZ;}
        void    getSphereCoord(Float_t *pr, Float_t *pphi, Float_t *ptheta) {*pr = m_fRad; *pphi = m_fPhi ; *ptheta = m_fTheta;}

        Float_t getCharge(){return m_fCharge;}
        Float_t getShower(){return m_fShower;}
        Float_t getSumDiff01(){return m_fSumDiff01;}
        Float_t getSumDiff02(){return m_fSumDiff02;}

        void  copyToTrueAddress(void) { m_nAddress = calcAddress();}
        void  setTrueAddress(Int_t address ) { m_nAddress = address;}
        Int_t getTrueAddress(void) { return m_nAddress;}

        void setSector(Char_t s) {m_nSector = s;}
        void setModule(Char_t m) {m_nModule = m;}
        void setRow(Char_t r) {m_nRow = r;}
        void setCol(Char_t c) {m_nCol = c;}

        void setSum(Int_t i, Float_t fSum);
        void setVar(Int_t i, Float_t fVar);
        void setClusterSize(Int_t i, Int_t cs);
        void setSum25(Float_t fSum);
        void setLocalMax(Float_t lmax){m_fLocalMax = lmax;}
        void setXY(Float_t x, Float_t y){m_fX = x; m_fY = y;}

        void setSigmaXY(Float_t x, Float_t y){m_fSigmaX = x; m_fSigmaY = y;}
        void setLabXYZ(Float_t x, Float_t y, Float_t z)
                                    {m_fLabX = x; m_fLabY = y;m_fLabZ = z;}
        void setSphereCoord(Float_t r, Float_t phi, Float_t theta)
                                    {m_fRad = r; m_fPhi = phi ; m_fTheta=theta;}
        void setCharge(Float_t fCharge){m_fCharge = fCharge;}
        void setShower(Float_t fShower){m_fShower = fShower;}

        virtual void updateCalc();


        Bool_t IsSortable() const { return kTRUE; }
        inline Int_t Compare(const TObject *obj) const;

        ClassDef(HShowerHit,1) //ROOT extension

private:
       Float_t m_fX;  //local coord
       Float_t m_fY;
       Float_t m_fSigmaX;
       Float_t m_fSigmaY; 

       Float_t m_fLabX;  //spatial coord in lab
       Float_t m_fLabY;
       Float_t m_fLabZ;

       Float_t m_fRad; // sphere coord in lab
       Float_t m_fPhi;
       Float_t m_fTheta;

       Float_t m_fSum0;  //sum of charge of nine pads in pre
       Float_t m_fSum1;  //sum of charge of nine pads in post
       Float_t m_fSum2;  //sum of charge  of nine pads in post2
       Float_t m_fSum2_25;  //sum of charge of 25 pads in post2
       Float_t m_fSum2_N;  //normalized sum of charge of 25 pads to 9 pads
       Float_t m_fVar0;  //var. of sum of charge in pre
       Float_t m_fVar1;  //var. of sum of charge in post
       Float_t m_fVar2;  //var. of sum of charge in post2
       Float_t m_fLocalMax; //charge in local max - not used

       Float_t m_fSumDiff01;  //:= m_fSum1 - m_fSum0
       Float_t m_fSumDiff02;  //:= m_fSum2 - m_fSum0
       Float_t m_fSumDiff12;  //:= m_fSum2 - m_fSum1
       Float_t m_fShower; //value of shower definition. it's defined
                          //in HShowerCriterium

       //number of fired cells around local max and local max
       Int_t m_nClusterSize0;
       Int_t m_nClusterSize1;
       Int_t m_nClusterSize2;

       Char_t m_nSector; //position of pad
       Char_t m_nModule;
       Char_t m_nRow;
       Char_t m_nCol;

       Float_t m_fCharge; //charge in local max

       Int_t m_nAddress;  //combined address of position pads
};


inline Int_t  HShowerHit::Compare(const TObject *obj) const {
    Int_t addr = calcAddress();
    if (addr == ((HShowerHit*)obj)->getAddress()) return 0;
    return (addr > ((HShowerHit*)obj)->getAddress()) ? 1 : -1;
}

#endif

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