ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : Witold Przygoda (przygoda@psja1.if.uj.edu.pl)
//*-- Revised : Martin Jurkovic <martin.jurkovic@ph.tum.de> 2010
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRichAnalysis
//
//
//////////////////////////////////////////////////////////////////////////////


#ifndef HRICHANALYSIS_H
#define HRICHANALYSIS_H

#include "TArrayI.h"
#include "TObject.h"

#include "hreconstructor.h"
#include "hrichhit.h"
#include "hrichlabel.h"
#include "hrichpadsignal.h"

class HCategory;
class HIterator;
class HParSet;
class HRichAnalysisPar;
class HRichGeometryPar;
class HRichHit;
class HRichHitHeader;
class HRichPadClean;
class HRichPadLabel;
class HRichRingFind;


class HRichAnalysis: public HReconstructor {

private:
   HRichAnalysis(const HRichAnalysis& source);
   HRichAnalysis& operator=(const HRichAnalysis& source);

public:

   Int_t iActiveSector;

   Short_t* pLeftBorder;  // left border of active pad area
   Short_t* pRightBorder; // dito right side (largest active col in row)

   HRichPadSignal **pPads; //!
   HRichLabel *pLabelArea;
   HRichHit *pRings;
   HIterator* fIter; //!
   HIterator* fIterHitHeader; //!

   Int_t iPadFiredNr;
   Int_t fPadFired[6];
   Int_t iPadCleanedNr;
   Int_t iClusterCleanedNr;
   TArrayI iClustersCleaned;
   Int_t iLabelNr;
   Int_t iRingNr;
   Int_t iRingNrTot;
   Int_t sectorPairNrTot;
   Int_t allPairNrTot; //2 rings in different sectors

   Int_t iFakePad;
   Int_t iFakeLocalMax4;
   Int_t iFakeLocalMax8;

   Int_t maxFiredTotalPads;

protected:

   HRichPadClean *pPadClean;
   HRichPadLabel *pPadLabel;
   HRichRingFind *pRingFind;

   HRichPadSignal* pSectorPads; //points to pads of active sector
   Int_t maxCols;
   Int_t maxRows;
   Int_t maxPads;
   Int_t secWithCurrent;

   HCategory *m_pCalCat; //Pointer to the cal data category
   HCategory *m_pHitCat; //Pointer to the hit data category
   HCategory *m_pHitHdrCat; //Pointer to the hit header data category

   HRichAnalysisPar* fpAnalysisPar;
   HRichGeometryPar* fpGeomPar;

   TArrayI iPadActive;
   HRichHitHeader *hithdrLoop;//!

public:

   HRichAnalysis();
   HRichAnalysis(const Text_t *name, const Text_t *title, Bool_t kSkip = kFALSE);
   virtual ~HRichAnalysis();


   Bool_t init();
   Bool_t reinit();
   Bool_t finalize();
   Int_t execute();
   Bool_t initParameters();

   void Reset();

   Int_t GetPadsXNr() {
      return maxCols;
   }
   Int_t GetPadsYNr() {
      return maxRows;
   }

   void SetActiveSector(Int_t sectornr);
   Int_t GetActiveSector() {
      return iActiveSector;
   }
   Int_t SetNextSector();

   Int_t GetPadNr() {
      return maxPads;
   }

   HRichPadSignal* GetPad(Int_t padnr) {
      return &pSectorPads[padnr];
   }
   HRichPadSignal* GetPad(Int_t padx, Int_t pady) {
      return &pSectorPads[padx + pady*maxCols];
   }

   Int_t GetLabelNr() {
      return iLabelNr;
   }
   HRichLabel* GetLabel(Int_t labelnr) {
      return &pLabelArea[labelnr];
   }

   Int_t GetRingNr() {
      return iRingNr;
   }
   HRichHit* GetRing(Int_t ringnr) {
      return &pRings[ringnr];
   }


   Bool_t IsOut(Int_t x, Int_t y) {
      return (!(y >= 0 && y < maxRows &&
                x >= pLeftBorder[y] && x <= pRightBorder[y]));
   }

   Bool_t IsOut(Int_t nowPad, Int_t dx, Int_t dy);
   Bool_t IsOut(Int_t x, Int_t y, Int_t dx, Int_t dy);

   HCategory* getCalCat() {
      return m_pCalCat;
   }
   HCategory* getHitCat() {
      return m_pHitCat;
   }
   HCategory* getHitHdrCat() {
      return m_pHitHdrCat;
   }
   void setCalCat(HCategory* pCalCat) {
      m_pCalCat = pCalCat;
   }
   void setHitCat(HCategory* pHitCat) {
      m_pHitCat = pHitCat;
   }
   void setHitHdrCat(HCategory* pHitHdrCat) {
      m_pHitHdrCat = pHitHdrCat;
   }

   HRichAnalysisPar* getAnalysisPar() {
      return fpAnalysisPar ;
   }
   HRichGeometryPar* getGeometryPar() {
      return fpGeomPar     ;
   }
   void setAnalysisPar(HRichAnalysisPar* pPar) {
      fpAnalysisPar = pPar;
   }
   void setGeometryPar(HRichGeometryPar* pPar) {
      fpGeomPar     = pPar;
   }

protected:
   Bool_t  kSkipEvtIfNoRing;
   void clear();
   void updateHeaders(const Int_t nSec, Int_t nEvNr);
   void updateHits(Int_t nSec);

   Int_t getPadsIndex(Int_t nSec, Int_t nRow, Int_t nCol);
   Int_t* getPadsPointer(Int_t* pPads, Int_t nSec);


public:
   ClassDef(HRichAnalysis, 0)
};

//============================================================================

#endif // HRICHANALYSIS_H
 hrichanalysis.h:1
 hrichanalysis.h:2
 hrichanalysis.h:3
 hrichanalysis.h:4
 hrichanalysis.h:5
 hrichanalysis.h:6
 hrichanalysis.h:7
 hrichanalysis.h:8
 hrichanalysis.h:9
 hrichanalysis.h:10
 hrichanalysis.h:11
 hrichanalysis.h:12
 hrichanalysis.h:13
 hrichanalysis.h:14
 hrichanalysis.h:15
 hrichanalysis.h:16
 hrichanalysis.h:17
 hrichanalysis.h:18
 hrichanalysis.h:19
 hrichanalysis.h:20
 hrichanalysis.h:21
 hrichanalysis.h:22
 hrichanalysis.h:23
 hrichanalysis.h:24
 hrichanalysis.h:25
 hrichanalysis.h:26
 hrichanalysis.h:27
 hrichanalysis.h:28
 hrichanalysis.h:29
 hrichanalysis.h:30
 hrichanalysis.h:31
 hrichanalysis.h:32
 hrichanalysis.h:33
 hrichanalysis.h:34
 hrichanalysis.h:35
 hrichanalysis.h:36
 hrichanalysis.h:37
 hrichanalysis.h:38
 hrichanalysis.h:39
 hrichanalysis.h:40
 hrichanalysis.h:41
 hrichanalysis.h:42
 hrichanalysis.h:43
 hrichanalysis.h:44
 hrichanalysis.h:45
 hrichanalysis.h:46
 hrichanalysis.h:47
 hrichanalysis.h:48
 hrichanalysis.h:49
 hrichanalysis.h:50
 hrichanalysis.h:51
 hrichanalysis.h:52
 hrichanalysis.h:53
 hrichanalysis.h:54
 hrichanalysis.h:55
 hrichanalysis.h:56
 hrichanalysis.h:57
 hrichanalysis.h:58
 hrichanalysis.h:59
 hrichanalysis.h:60
 hrichanalysis.h:61
 hrichanalysis.h:62
 hrichanalysis.h:63
 hrichanalysis.h:64
 hrichanalysis.h:65
 hrichanalysis.h:66
 hrichanalysis.h:67
 hrichanalysis.h:68
 hrichanalysis.h:69
 hrichanalysis.h:70
 hrichanalysis.h:71
 hrichanalysis.h:72
 hrichanalysis.h:73
 hrichanalysis.h:74
 hrichanalysis.h:75
 hrichanalysis.h:76
 hrichanalysis.h:77
 hrichanalysis.h:78
 hrichanalysis.h:79
 hrichanalysis.h:80
 hrichanalysis.h:81
 hrichanalysis.h:82
 hrichanalysis.h:83
 hrichanalysis.h:84
 hrichanalysis.h:85
 hrichanalysis.h:86
 hrichanalysis.h:87
 hrichanalysis.h:88
 hrichanalysis.h:89
 hrichanalysis.h:90
 hrichanalysis.h:91
 hrichanalysis.h:92
 hrichanalysis.h:93
 hrichanalysis.h:94
 hrichanalysis.h:95
 hrichanalysis.h:96
 hrichanalysis.h:97
 hrichanalysis.h:98
 hrichanalysis.h:99
 hrichanalysis.h:100
 hrichanalysis.h:101
 hrichanalysis.h:102
 hrichanalysis.h:103
 hrichanalysis.h:104
 hrichanalysis.h:105
 hrichanalysis.h:106
 hrichanalysis.h:107
 hrichanalysis.h:108
 hrichanalysis.h:109
 hrichanalysis.h:110
 hrichanalysis.h:111
 hrichanalysis.h:112
 hrichanalysis.h:113
 hrichanalysis.h:114
 hrichanalysis.h:115
 hrichanalysis.h:116
 hrichanalysis.h:117
 hrichanalysis.h:118
 hrichanalysis.h:119
 hrichanalysis.h:120
 hrichanalysis.h:121
 hrichanalysis.h:122
 hrichanalysis.h:123
 hrichanalysis.h:124
 hrichanalysis.h:125
 hrichanalysis.h:126
 hrichanalysis.h:127
 hrichanalysis.h:128
 hrichanalysis.h:129
 hrichanalysis.h:130
 hrichanalysis.h:131
 hrichanalysis.h:132
 hrichanalysis.h:133
 hrichanalysis.h:134
 hrichanalysis.h:135
 hrichanalysis.h:136
 hrichanalysis.h:137
 hrichanalysis.h:138
 hrichanalysis.h:139
 hrichanalysis.h:140
 hrichanalysis.h:141
 hrichanalysis.h:142
 hrichanalysis.h:143
 hrichanalysis.h:144
 hrichanalysis.h:145
 hrichanalysis.h:146
 hrichanalysis.h:147
 hrichanalysis.h:148
 hrichanalysis.h:149
 hrichanalysis.h:150
 hrichanalysis.h:151
 hrichanalysis.h:152
 hrichanalysis.h:153
 hrichanalysis.h:154
 hrichanalysis.h:155
 hrichanalysis.h:156
 hrichanalysis.h:157
 hrichanalysis.h:158
 hrichanalysis.h:159
 hrichanalysis.h:160
 hrichanalysis.h:161
 hrichanalysis.h:162
 hrichanalysis.h:163
 hrichanalysis.h:164
 hrichanalysis.h:165
 hrichanalysis.h:166
 hrichanalysis.h:167
 hrichanalysis.h:168
 hrichanalysis.h:169
 hrichanalysis.h:170
 hrichanalysis.h:171
 hrichanalysis.h:172
 hrichanalysis.h:173
 hrichanalysis.h:174
 hrichanalysis.h:175
 hrichanalysis.h:176
 hrichanalysis.h:177
 hrichanalysis.h:178
 hrichanalysis.h:179
 hrichanalysis.h:180
 hrichanalysis.h:181
 hrichanalysis.h:182
 hrichanalysis.h:183
 hrichanalysis.h:184
 hrichanalysis.h:185
 hrichanalysis.h:186
 hrichanalysis.h:187
 hrichanalysis.h:188
 hrichanalysis.h:189
 hrichanalysis.h:190
 hrichanalysis.h:191
 hrichanalysis.h:192
 hrichanalysis.h:193
 hrichanalysis.h:194
 hrichanalysis.h:195
 hrichanalysis.h:196
 hrichanalysis.h:197
 hrichanalysis.h:198
 hrichanalysis.h:199
 hrichanalysis.h:200
 hrichanalysis.h:201
 hrichanalysis.h:202
 hrichanalysis.h:203
 hrichanalysis.h:204
 hrichanalysis.h:205
 hrichanalysis.h:206
 hrichanalysis.h:207
 hrichanalysis.h:208