ROOT logo
#ifndef HGEOMHIT_H
#define HGEOMHIT_H

using namespace std;
#include "TNamed.h"
#include "TArrayI.h"
#include "hgeomtransform.h"
#include <fstream>
#include <iomanip>

class HGeomSet;
class HGeomNode;

class  HGeomHit : public TNamed {
private:
  class HGeomCopyNodeNum : public TNamed {
    public:
      Int_t maxCopyNum;
      HGeomCopyNodeNum(TString& name,Int_t n) {
        SetName(name);
        maxCopyNum=n;
      }
      ~HGeomCopyNodeNum() {}
  };
  TList* copies;          // List of copy nodes
protected:
  TString hitFile;        // name of hit file
  HGeomSet* pSet;         // pointer to detector part
  HGeomNode* currentNode; // pointer to current node
  Char_t compName[5];       // name of hit component
  Int_t nh;      // number of hit components
  Char_t* chnamh;  // names of the hit components
  Int_t* nbitsh; // array for the number of bits in which to pack the components of a hit
  Float_t* orig; // array for the scale factors applied before packing the hit values
  Float_t* fact; // array for the scale factors applied before packing the hit values
  Int_t nvmax;   // maximum number of levels in tree of module
  Int_t nv;      // number of volume descriptors (derived from tree)
  Char_t* chnmsv;  // array of nv names to decribe the volume (derived from tree)   
  Int_t* nbitsv; // array of bits in which to pack the copy number of the volume chnmsv

  HGeomHit(HGeomSet* p=0);
public:
  virtual ~HGeomHit();
  void setHitFile(const Char_t* filename) {hitFile=filename;}
  const Char_t* getHitFile() {return hitFile.Data();}
  void read(fstream&);
  void write(fstream&);
  void print();
  Bool_t setCurrentNode(HGeomNode*);
  const Char_t* getDetectorName();
  const Char_t* getComponentName() {return compName;}
  Bool_t calcRefPos(HGeomVector&,TString&);
  virtual Int_t getIdType()=0;
  Int_t getNh() {return nh;} 
  Char_t* getChnamh() {return chnamh;}
  Int_t* getNbitsh() {return nbitsh;}
  Float_t* getOrig() {return orig;}
  Float_t* getFact() {return fact;}
  Int_t getNv() {return nv;}
  Char_t* getChnmsv() {return chnmsv;}  
  Int_t* getNbitsv() {return nbitsv;}
  void setNh(Int_t);
  void fill(Int_t,const Char_t*,Int_t,Float_t,Float_t);
  ClassDef(HGeomHit,0) // Base class for hit definition in GEANT
};

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