#ifndef HKalDetCradle_h #define HKalDetCradle_h // from ROOT #include "TObjArray.h" // from hydra class HMdcSizesCells; class HKalMdcMeasLayer; class HKalMixture; class HKalDetCradle : public TObjArray { private: static const Int_t kNumMdcMats = 5; // Number of materials in an mdc layer. static const Int_t kNumMdcs = 4; // Number of mdc modules. static const Int_t kNumSecs = 6; // Number of mdc sectors in a module. Int_t nLayersInMdc; HKalMixture *matAir; // Air. Material between Mdc's. HKalMixture **matsMdc; // Properties of material mixture for an mdc layer. HKalMixture **matsMdcGas; // Properties of material mixture for an mdc containing only gas. public: enum mdcComponent { // Index for the different components of an mdc layer. kCatWi = 0, kFieldWi = 1, kSenseWi = 2, kWindow = 3, kGas = 4 }; public: HKalDetCradle(); HKalDetCradle(Int_t nLayInMdc); virtual ~HKalDetCradle(); virtual void addMdcLayersToCradle(const HMdcSizesCells *fSizesCells, Int_t nLayers, Int_t module, Int_t sector); virtual const HKalMdcMeasLayer* getMdcLayerAt(Int_t module, Int_t sector, Int_t layer=0) const; virtual HKalMixture* getMdcMaterial(mdcComponent comp, Int_t module) const; virtual void getMdcMaterialVolumeFracs(Float_t volFracs[kNumMdcMats], Int_t module, Int_t sector, Int_t layer) const; static void getProperties(Float_t mat[kNumMdcMats], const Char_t *id); virtual void initMdcMaterials(); virtual void install(HKalMdcMeasLayer *layer); virtual Bool_t layOk(Int_t l) const { return (l>=0 && l=0 && m=0 && s