ROOT logo
#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;       // Number of layers in each Mdc.

    HKalMixture  *matAir;     // Air. Material between Mdc's.
    HKalMixture **matsMdc;    // Properties of  material mixture for an mdc layer.

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, const TObjArray *customMats=NULL);

    virtual ~HKalDetCradle();

    virtual void         addMdcLayersToCradle     (const HMdcSizesCells *fSizesCells, Int_t sector, Int_t module, Int_t nLayers);

    virtual Int_t        getLayersInMdc           () const        { return nLayersInMdc; }

    virtual const HKalMdcMeasLayer* getMdcLayerAt (Int_t sector, Int_t module, Int_t layer=0) const;

    virtual HKalMixture* getMdcMaterial           (mdcComponent comp, Int_t module) const;

    virtual void         getMdcMaterialVolumeFracs(Float_t volFracs[kNumMdcMats], Int_t sector, Int_t module, 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<nLayersInMdc); }

    virtual Bool_t       modOk                    (Int_t m) const { return m>=0 && m<kNumMdcs; }

    virtual Bool_t       secOk                    (Int_t s) const { return s>=0 && s<kNumSecs; }

    ClassDef(HKalDetCradle, 0)
};

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