ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : Witold Przygoda (przygoda@psja1.if.uj.edu.pl)
//*-- Revised : Martin Jurkovic <martin.jurkovic@ph.tum.de> 2010
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRichPadTab
//
// fPadParams: array with size (numberOfPads * 11) in sector 1
//               11 numbers for each pad:
//                 1:    pad_pos_id = colNumber*100 + rowNumber
//                 2:    theta
//                 3:    phi (in sector 1)
//                 4..11 x and y of the 4 pad corners
//               theta and the pad corners are identical in each sector
//               for phi the sector rotation (relative to sector 1) must be added
//
//////////////////////////////////////////////////////////////////////////////


#ifndef RICHPADTAB_H
#define RICHPADTAB_H

#include "TArrayF.h"
#include "TClonesArray.h"
#include "TObject.h"

#include "richdef.h"

class HParamList;
class HRichPad;

class HRichPadTab : public TObject {

private:

   TClonesArray* fPadsArray;            // Pad array
   Int_t   fActivePadsNr;               // Number of active pads
   UInt_t  fPadsLongestRow;             // Number of the row with the most active pads
   UInt_t  fMiddlePad;                  // Pad number of the middle pad in the longest row
   Float_t fPadsLongestRowMiddle;       // X-position of the middle pad in the longest row

   TArrayF fPadParams;                  // Array of pad parameters


private:

   TObject*& getSlot(Int_t nIndx);
   void      deletePads();
   Int_t     calcAddr(UInt_t col, UInt_t row);
   Bool_t    calculatePadParameters();
   Bool_t    dummyInitialisation();
   Bool_t    initialisePads();

public:

   HRichPadTab();
   ~HRichPadTab();

   void   clear();
   void   incActivePadsNr();
   void   printParams();
   void   printParamsFull();
   void   putParams(HParamList* l);
   Bool_t getParams(HParamList* l);
   Bool_t isOut(UInt_t X, UInt_t Y);
   Int_t  createPads();

// Getters
   HRichPad* getPad(UInt_t padNr);
   HRichPad* getPad(UInt_t col, UInt_t row);
   HRichPad* getPad(Float_t Xpos, Float_t Ypos);
   Int_t getActivePadsNr();

// Setters
   void setPad(HRichPad* pPad, UInt_t col, UInt_t row);
   void setPad(HRichPad* pPad, UInt_t padNr);

   ClassDef(HRichPadTab, 1)
};

inline Int_t HRichPadTab::calcAddr(UInt_t col, UInt_t row)
{
   return col + RICH_MAX_COLS * row;
}
inline void HRichPadTab::incActivePadsNr()
{
   fActivePadsNr++;
}

inline HRichPad* HRichPadTab::getPad(UInt_t padNr)
{
   return static_cast<HRichPad*>(fPadsArray->At(padNr));
}
inline Int_t HRichPadTab::getActivePadsNr()
{
   return fActivePadsNr;
}

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