ROOT logo
#ifndef HEMCCLUSTER_H
#define HEMCCLUSTER_H

#include "TObject.h"
#include "hemccalsim.h"

class HEmcCluster : public TObject {
protected:
  Char_t  sector;         // sector number (0...5)
  UChar_t cell;           // cell which has maximal energy deposit (0...254)
  Short_t index;          // cluster index in category catEmcCluster
  UChar_t ncells;         // number of cells in the cluster
  Float_t energy;         // energy deposited in the cluster
  Float_t cellEnergy;     // energy deposited in the tower (cell) which has maximal energy deposit
  Float_t time;           // mean time weighted by energy
  Float_t xmod;           // X coordinate in Module system [mm]
  Float_t ymod;           // Y coordinate in Module system [mm]
  Float_t sigmaXYmod;     // error of Xmod (Ymod)  (these values are the same)
  Float_t xlab;           // X coordinate in Lab system [mm]
  Float_t ylab;           // Y coordinate in Lab system [mm]
  Float_t zlab;           // Z coordinate in Lab system [mm]
  Float_t theta;          // theta angle [degrees]
  Float_t phi;            // phi angle [degrees]
  UInt_t flags;           // user's bit flag                  ... |6|5|4|3|2|1|
                          //                                               s a    a=active  s=sorter flag kIsUsed in HParticleCand
  UChar_t cellList[24];   // list of cells in cluster

  Short_t rpcIndex;       // index of correlated HRpcCluster
  UChar_t nMatchedCells;  // number of EMC cells matched with RPC
  UChar_t nMatchedTracks; // number of matched tracks (HParticleCand)
  Float_t qualityDThDPh;  // quality of anglular matching with RPC: it is two dimensional taking into account
                          // the difference between two angles divided by anglular error
  Float_t qualityDTime;   // quality of time matching with RPC: the difference between times divided by time error

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){}

  // Functions getVariable
  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;}

  // Matching with rpc
  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++;}

  // Functions setVariable
  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) //EMC cal data class
};

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