#ifndef HEMCCLUSTER_H
#define HEMCCLUSTER_H
#include "TObject.h"
#include "hemccalsim.h"
class HEmcCluster : public TObject {
protected:
Char_t sector;
UChar_t cell;
Short_t index;
UChar_t ncells;
Float_t energy;
Float_t cellEnergy;
Float_t time;
Float_t xmod;
Float_t ymod;
Float_t sigmaXYmod;
Float_t xlab;
Float_t ylab;
Float_t zlab;
Float_t theta;
Float_t phi;
UInt_t flags;
UChar_t cellList[24];
Short_t rpcIndex;
UChar_t nMatchedCells;
UChar_t nMatchedTracks;
Float_t qualityDThDPh;
Float_t qualityDTime;
public:
HEmcCluster(void) :
sector(-1),
cell (0),
index(-1),
ncells(0),
energy(0.),
cellEnergy(0.),
time(0.),
xmod(0.),
ymod(0.),
sigmaXYmod(0.),
xlab(0.),
ylab(0.),
zlab(0.),
theta(0.),
phi(0.),
flags(1),
rpcIndex(-1),
nMatchedCells(0),
nMatchedTracks(0),
qualityDThDPh(-100.),
qualityDTime (-100.)
{
memset(cellList,0,sizeof(cellList));
}
~HEmcCluster(void){}
Char_t getSector(void) const {return sector;}
UChar_t getCell(void) const {return cell;}
Short_t getIndex(void) const {return index;}
Float_t getEnergy(void) const {return energy;}
Float_t getTime(void) const {return time;}
Float_t getMaxEnergy(void) const {return cellEnergy;}
Float_t getXMod(void) const {return xmod;}
Float_t getYMod(void) const {return ymod;}
Float_t getSigmaXMod(void) const {return sigmaXYmod;}
Float_t getSigmaYMod(void) const {return sigmaXYmod;}
Float_t getXLab(void) const {return xlab;}
Float_t getYLab(void) const {return ylab;}
Float_t getZLab(void) const {return zlab;}
void getXYZLab(Float_t& x,Float_t& y,Float_t& z) {x=xlab; y=ylab; z=zlab;}
Float_t getTheta() const {return theta;}
Float_t getPhi() const {return phi;}
UChar_t getCell(Int_t ind) const;
UChar_t getNCells(void) const {return ncells<=25 ? ncells : 25;}
UChar_t getTotalNCells(void) const {return ncells;}
Bool_t ifActive(void) const {return flags & 0x01; }
Bool_t isUsedInParticleCand(void) const {return (flags>>1) & 0x01;}
Short_t getRpcIndex(void) const {return rpcIndex;}
Float_t getQualDThDPh(void) const {return qualityDThDPh;}
Float_t getQualDTime(void) const {return qualityDTime;}
UChar_t getNMatchedCells(void) const {return nMatchedCells;}
UChar_t getNMatchedTracks(void) const {return nMatchedTracks;}
void setRpcIndex(Short_t i) {rpcIndex = i;}
void setQualDThDPh(Float_t q) {qualityDThDPh = q;}
void setQualDTime(Float_t q) {qualityDTime = q;}
void setNMatchedCells(UChar_t n) {nMatchedCells = n;}
void addMatchedTrack(void) {if(nMatchedTracks < 255) nMatchedTracks++;}
void setSector(Char_t s) {sector = s;}
void setIndex(Short_t ind) {index = ind;}
void setEnergy(Float_t e) {energy = e;}
void setTime(Float_t t) {time = t;}
void setMaxEnergy(Float_t e) {cellEnergy = e;}
void setXYMod(Float_t x,Float_t y) {xmod=x; ymod=y;}
void setSigmaXYMod(Float_t sigma) {sigmaXYmod=sigma;}
void setXYZLab(Float_t x,Float_t y,Float_t z) {xlab=x; ylab=y; zlab=z;}
void setTheta(Float_t a) {theta = a;}
void setPhi(Float_t a) {phi = a;}
void setCellList(Int_t ncs,UChar_t* list);
void setInactive() { flags &= ~( 0x01 << 0 ); }
void setIsUsedInParticleCand(void) { flags |= ( 0x01 << 1); }
void unsetIsUsedInParticleCand(void) { flags &= ~( 0x01 << 1 ); }
ClassDef(HEmcCluster,1)
};
#endif /* !HEMCCLUSTER_H */