ROOT logo
#ifndef HDETGEOMPAR_H
#define HDETGEOMPAR_H

#include "hgeomtransform.h"
#include "hparset.h"
#include "TNamed.h"
#include "TObjArray.h"

class HGeomCompositeVolume;
class HGeomShapes;

class HModGeomPar :  public TNamed {
protected:
  TString refName;                 // name of the reference module volume
  HGeomCompositeVolume* refVolume; //! pointer to the reference module volume
  HGeomTransform transform;        // lab transformation
public:
  HModGeomPar() {refVolume=0;}
  ~HModGeomPar() {refVolume=0;}
  HGeomCompositeVolume* getRefVolume() {return refVolume;} 
  HGeomTransform& getLabTransform() {return transform;}
  const Text_t* getRefName() const { return refName; }
  void setRefName(const Text_t* s);
  void clear();
  void print();
  void setVolume(HGeomCompositeVolume* p) {refVolume=p;}
  ClassDef(HModGeomPar,1) // Module level of the basic geometry container
};

class HDetGeomPar : public HParSet {
protected:
  TObjArray* modules;    // linear array of all modules (type HModGeomPar)
  TObjArray* refVolumes; // array of module types (type HGeomCompositeVolume)
  Int_t maxSectors;      // maximum number of sectors
  Int_t maxModules;      // maximum number of modules in a sector
  Int_t numComponents;   // number of components in a sector 
  HGeomShapes* shapes;   //! pointer to the shape classes
  Bool_t isFirstInit;    //! kTRUE before first initialization
public:
  HDetGeomPar(const Char_t* name="",const Char_t* title="",const Char_t* context="",
              const Char_t* detectorName="");
  virtual ~HDetGeomPar();
  Int_t getNumModules();
  Int_t getNumRefModules();
  Int_t getNumComponents() {return numComponents;}
  Int_t getMaxSectors() {return maxSectors;}  
  Int_t getMaxModules() {return maxModules;}
  Bool_t isFirstInitialization() {return isFirstInit;}
  void setNotFirstInit() {isFirstInit=kFALSE;}  
  HModGeomPar* getModule(const Int_t,const Int_t);
  HModGeomPar* getModule(const Int_t);
  void getSector(TObjArray*,const Int_t);
  HGeomCompositeVolume* getRefVolume(const Int_t);
  void addRefVolume(HGeomCompositeVolume*,const Int_t);
  virtual Bool_t init(HParIo*,Int_t*) {return kFALSE;}
  virtual Int_t write(HParIo*) {return kFALSE;}
  virtual void clear();
  virtual void printParam(); 
  virtual Int_t getSecNum(const TString&) {return -1;}
  virtual Int_t getModNumInMod(const TString&) {return -1;}
  virtual Int_t getModNumInComp(const TString&) {return -1;}
  virtual Int_t getCompNum(const TString&) {return -1;}
  HGeomShapes* getShapes() {return shapes;}
  ClassDef(HDetGeomPar,2) // basic geometry container of a detector
};

#endif /* !HDETGEOMPAR_H */

 hdetgeompar.h:1
 hdetgeompar.h:2
 hdetgeompar.h:3
 hdetgeompar.h:4
 hdetgeompar.h:5
 hdetgeompar.h:6
 hdetgeompar.h:7
 hdetgeompar.h:8
 hdetgeompar.h:9
 hdetgeompar.h:10
 hdetgeompar.h:11
 hdetgeompar.h:12
 hdetgeompar.h:13
 hdetgeompar.h:14
 hdetgeompar.h:15
 hdetgeompar.h:16
 hdetgeompar.h:17
 hdetgeompar.h:18
 hdetgeompar.h:19
 hdetgeompar.h:20
 hdetgeompar.h:21
 hdetgeompar.h:22
 hdetgeompar.h:23
 hdetgeompar.h:24
 hdetgeompar.h:25
 hdetgeompar.h:26
 hdetgeompar.h:27
 hdetgeompar.h:28
 hdetgeompar.h:29
 hdetgeompar.h:30
 hdetgeompar.h:31
 hdetgeompar.h:32
 hdetgeompar.h:33
 hdetgeompar.h:34
 hdetgeompar.h:35
 hdetgeompar.h:36
 hdetgeompar.h:37
 hdetgeompar.h:38
 hdetgeompar.h:39
 hdetgeompar.h:40
 hdetgeompar.h:41
 hdetgeompar.h:42
 hdetgeompar.h:43
 hdetgeompar.h:44
 hdetgeompar.h:45
 hdetgeompar.h:46
 hdetgeompar.h:47
 hdetgeompar.h:48
 hdetgeompar.h:49
 hdetgeompar.h:50
 hdetgeompar.h:51
 hdetgeompar.h:52
 hdetgeompar.h:53
 hdetgeompar.h:54
 hdetgeompar.h:55
 hdetgeompar.h:56
 hdetgeompar.h:57
 hdetgeompar.h:58
 hdetgeompar.h:59
 hdetgeompar.h:60
 hdetgeompar.h:61
 hdetgeompar.h:62
 hdetgeompar.h:63
 hdetgeompar.h:64
 hdetgeompar.h:65
 hdetgeompar.h:66
 hdetgeompar.h:67
 hdetgeompar.h:68