// ******** Header of class to build HypGe encapsulated HPGe Crystal needed to build cluster detectors ************* // by steinen@kph.uni-mainz.de #ifndef PNDGEOHYPGECRYSTAL_H #define PNDGEOHYPGECRYSTAL_H #include "TGeoMedium.h" #include "TGeoTube.h" #include "TGeoPgon.h" #include "TGeoTorus.h" #include "TGeoVolume.h" //#include "TGeoVolumeAssembly.h" // does not exist, class in inside TGeoVolume.h #include "TGeoMatrix.h" // all the translations, rotations .. #include "TGeoCompositeShape.h" #include "TMath.h" #include class PndGeoHypGeCrystal { protected: //Media TGeoMedium *Ge; TGeoMedium *Al; //objects to build the encapsulation of the crystal Double_t CapsuleThickness; Double_t InnerScale; Double_t OuterPgonInnerRadius; Double_t CapsuleLength; char *CapsuleName; TGeoTube *CapsuleOuterTube; TGeoTube *CapsuleInnerTube; TGeoPgon *CapsuleOuterPgon; TGeoPgon *CapsuleInnerPgon; TGeoTube *CapsuleTopCover; TGeoTranslation *CapsuleTopZTranslation; TGeoTranslation *CapsuleInnerZTranslation; TGeoCompositeShape *CapsuleOuterShape; TGeoCompositeShape *CapsuleInnerShape; TGeoCompositeShape *CapsuleCompleteShape; //OuterShape - InnerShape TGeoVolume *Capsule; //objects to build the crystal Double_t VacuumThickness; Double_t CrystalLength; Double_t CrystalFrontPgonInnerRadius; Double_t CrystalInnerPgonRadius; char *CrystalName; //objects to build the main crystal shape TGeoTube *CrystalTube; TGeoPgon *CrystalPgon; //objects to build the inner crystal hole TGeoTube *CrystalInnerTube; TGeoTranslation *CrystalInnerTubeZTranslation; TGeoTorus *CrystalInnerTubeTorus; TGeoTranslation *CrystalInnerTubeTorusZTranslation; TGeoTube *CrystalInnerTubeMiniExtraTube; TGeoTranslation *CrystalInnerTubeMiniExtraTubeZTranslation; //objects to get the top rounding of the crystal TGeoTube *CrystalTopRoundingTube; TGeoTranslation *CrystalTopRoundingTubeZTranslation; TGeoTorus *CrystalTopRoundingTorus; TGeoCompositeShape *CrystalTopRoundingTooling; TGeoTranslation *CrystalTopRoundingToolingZTranslation; //objects to build the guard ring of the crystal TGeoTube *CrystalGuardRingTube; TGeoTranslation *CrystalGuardRingTubeZTranslation; TGeoTorus *CrystalGuardRingTorus; TGeoTorus *CrystalGuardRingTorusInner; TGeoTranslation *CrystalGuardRingTorusZTranslation; TGeoTube *CrystalGuardRingMiniExtraTube; TGeoTranslation *CrystalGuardRingMiniExtraTubeZTranslation; //building the whole crystal TGeoCompositeShape *CrystalShape; TGeoVolume *Crystal; //objects to combine crystal and capsule TGeoVolumeAssembly *CrystalPlusCapsule; TGeoCombiTrans *CapsuleCombiTrans; TGeoCombiTrans *CrystalInsideCapsuleCombiTrans; Int_t CrystalNumber; public: PndGeoHypGeCrystal(); PndGeoHypGeCrystal(TGeoMedium *ExtGe, TGeoMedium *ExtAl,Int_t ExtCrystalNumber); ~PndGeoHypGeCrystal() {}; Int_t GetCrystalNumber(); Int_t GetNdaughters(); void PrintNodes(); void PlaceCrystal(TGeoVolume *top, TGeoMatrix* CrystalPlaceAndDirectionTranslation); // places the encapsulated crystal ClassDef(PndGeoHypGeCrystal,0); // Class for PndGeoHypGeCrystal }; #endif /* !PNDGEOHYPGECRYSTAL_H */