#ifndef HGEOSHOWER_H #define HGEOSHOWER_H // class for Shower-detector derived from base class HGeoSet (linked list); // The shower-detector consists of a keepin-volumes in each sector. Each // keepin-volume containes 3 modules. // #include "hgeoset.h" class HGeoShower : public HGeoSet { public: HGeoShower(HGeoShapes & shapes) : HGeoSet() { // unique substring of the name of the keepin-volume keepinName="SHK"; // unique substring of the name of the module // 3rd is changed from 1...3 in readDet(...) detName="SH1M"; // unique substring of the name of all daughtervolumes //3rd character is changed from 1...3 in readDet(...) eleName="S1"; // pointer to the class HGeoShapes pShapes=&shapes; // maximum of 3 modules in one keepin-volume numModules=3; noOfKeepIn= new int [4]; // readHits set to 1 after successful read hitsRead=0; } ~HGeoShower(){delete [] noOfKeepIn;} // reads the keepin-volume and the 3 modules from database using // helperfunctions from the baseclass int readDet(HGeoInfo & geoInfo, HGeoMedia & geomedia); // reads the keepin-volume and the 3 modules from file using // helperfunctions from the baseclass int readDet(HGeoInfo & geoInfo); // creates the keepin-volume and the 3 modules omitting all volumes with // inout-flag 0 int createDet(HGeoInfo & geoInfo, HGeoMedia & geoMedia); // invokes the Geantroutines GSDETV and GSDETH to classify the sensitive // detector META for which one wants to store hits; // The necessary variables parameters are hardwired in this function. int createHits(HString & volName); protected: // maximum number of shower-modules in one sector int numModules; // array to store for each shower-module the number of sectors where it is // defined // ( noOfKeepIn[i]=0 if module i is not defined, else >=1 ) int *noOfKeepIn; }; #endif