]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONv2.h
In two-pair fctn, track pair must be also swapped if part-pair is.
[u/mrichter/AliRoot.git] / MUON / AliMUONv2.h
CommitLineData
ba030c0e 1#ifndef ALI_MUON_V2_H
2#define ALI_MUON_V2_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8// Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
9//
10// Class AliMUONv2
11// ---------------
12// Inherits from AliMUONv1 but with a more detailed
13// geometrical description of station 1
14
5f91c9e8 15#include <TVector2.h>
16#include <TVector3.h>
ba030c0e 17
18#include "AliMUONv1.h"
5f91c9e8 19#include "AliMUONSt1Types.h"
ba030c0e 20#include "AliMUONSt1SpecialMotif.h"
21
5f91c9e8 22//typedef Float_t GReal_t; // for AliGeant3
23typedef Double_t GReal_t; // for VirtualMC
ba030c0e 24
25class TTree;
5f91c9e8 26class TArrayI;
27class AliMpSector;
ba030c0e 28
5f91c9e8 29class AliMUONv2 : public AliMUONv1
30{
ba030c0e 31 public:
32 AliMUONv2();
33 AliMUONv2(const char* name, const char* title);
34 AliMUONv2(const AliMUONv2& rMUON);
35 virtual ~AliMUONv2();
36
37 virtual Int_t IsVersion() const;
ba030c0e 38 virtual void CreateMaterials();
5f91c9e8 39 virtual void CreateGeometry();
40 virtual void Init();
41
ba030c0e 42 protected:
43 // Copy Operator
5f91c9e8 44 AliMUONv2& operator = (const AliMUONv2& rhs);
45 virtual Int_t GetChamberId(Int_t volId) const;
46
ba030c0e 47 private:
5f91c9e8 48 // Methods
49 //
50 void CreateHole();
51 void CreateDaughterBoard();
52 void CreateInnerLayers();
53 void CreateQuadrant(Int_t chamber);
54 void CreateFoamBox(const char* name,const TVector2& dimensions);
55 void CreatePlaneSegment(const char* name,const TVector2& dimensions,
56 Int_t nofHoles);
57 void CreateFrame(Int_t chamber);
ba030c0e 58
5f91c9e8 59 void PlaceInnerLayers(Int_t chamber);
60 void PlaceSector(AliMpSector* sector, TSpecialMap specialMap,
61 const TVector3& where, Bool_t reflectZ, Int_t chamber);
62
63 TString QuadrantMLayerName(Int_t chamber) const;
64 TString QuadrantNLayerName(Int_t chamber) const;
65 TString QuadrantFLayerName(Int_t chamber) const;
66 TString GasVolumeName(const TString& name, Int_t chamber) const;
67
68 void AddChamberGid(Int_t id,Int_t volName,Int_t idx);
69 Bool_t IsInChamber(Int_t ich, Int_t volGid) const;
70
71 GReal_t TotalHzPlane() const ; // Total mechanical plane half Size
72 GReal_t TotalHzDaughter() const ; // Total daughter plane half Size
73 GReal_t TotalHz() const ; // Total plane half Size
74
75 // Constants
76 //
77 static const GReal_t fgkHzPadPlane; // Pad plane
78 static const GReal_t fgkHzFoam; // Foam of mechanicalplane
79 static const GReal_t fgkHzFR4; // FR4 of mechanical plane
80 static const GReal_t fgkHzSnPb; // Pad/Kapton connection (66 pt)
81 static const GReal_t fgkHzKapton; // Kapton
82 static const GReal_t fgkHzBergPlastic; // Berg connector
83 static const GReal_t fgkHzBergCopper; // Berg connector (80 pt)
84 static const GReal_t fgkHzDaughter; // Daughter board
85 static const GReal_t fgkHzGas; // ArCO2 Gas
86
87 // Sensitive copper pads, foam layer, PCB and electronics model parameters
ba030c0e 88 static const GReal_t fgkHxHole;
89 static const GReal_t fgkHyHole;
90 static const GReal_t fgkHxBergPlastic;
91 static const GReal_t fgkHyBergPlastic;
92 static const GReal_t fgkHxBergCopper;
93 static const GReal_t fgkHyBergCopper;
94 static const GReal_t fgkHxKapton;
95 static const GReal_t fgkHyKapton;
96 static const GReal_t fgkHxDaughter;
97 static const GReal_t fgkHyDaughter;
98 static const GReal_t fgkOffsetX;
99 static const GReal_t fgkOffsetY;
100 static const GReal_t fgkDeltaFilleEtamX;
101 static const GReal_t fgkDeltaFilleEtamY;
ba030c0e 102
5f91c9e8 103 static const GReal_t fgkDeltaQuadLHC; //LHC Origin wrt Quadrant Origin
104 static const GReal_t fgkFrameOffset;
105
106 // Quadrant Mother volume - TUBS1
107 static const GReal_t fgkMotherIR1;
108 static const GReal_t fgkMotherOR1;
109 static const GReal_t fgkMotherThick1;
110 static const GReal_t fgkMotherPhiL1;
111 static const GReal_t fgkMotherPhiU1;
112
113 // Quadrant Mother volume - TUBS2 (2 copies at different Z's)
114 static const GReal_t fgkMotherIR2;
115 static const GReal_t fgkMotherOR2;
116 static const GReal_t fgkMotherThick2;
117 static const GReal_t fgkMotherPhiL2;
118 static const GReal_t fgkMotherPhiU2;
119
120 static const char* fgkHoleName; // prefix for automatic volume naming
121 static const char* fgkQuadrantMLayerName;// prefix for automatic volume naming
122 static const char* fgkQuadrantNLayerName;// prefix for automatic volume naming
123 static const char* fgkQuadrantFLayerName;// prefix for automatic volume naming
124 static const char* fgkDaughterName; // prefix for automatic volume naming
125 static const char fgkFoamLayerSuffix; // suffix for automatic volume naming
126
127 // Data members
128 //
129 Float_t fRadlCopper; //! copper computed radiation length
130 Float_t fRadlFoam; //! foam computed radiation length
131 Float_t fRadlFR4; //! FR4 computed radiation length
132 TArrayI* fChamberV2[2];// Sensitive volumes IDs
ba030c0e 133
ba030c0e 134 ClassDef(AliMUONv2,1) // MUON Detector base class
135};
136
137// inline functions
138
139inline Int_t AliMUONv2::IsVersion () const
5f91c9e8 140{ return 2; }
141
142inline GReal_t AliMUONv2::TotalHzPlane() const
143//{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; }
144{ return fgkHzFoam + fgkHzFR4; }
145
146inline GReal_t AliMUONv2::TotalHzDaughter() const
147{ return fgkHzBergPlastic + fgkHzDaughter; }
148
149inline GReal_t AliMUONv2::TotalHz() const
150{ return TotalHzPlane() + TotalHzDaughter(); }
151
152inline TString AliMUONv2::QuadrantMLayerName(Int_t chamber) const
153{ return Form("%s%d",fgkQuadrantMLayerName,chamber); }
154
155inline TString AliMUONv2::QuadrantNLayerName(Int_t chamber) const
156{ return Form("%s%d",fgkQuadrantNLayerName,chamber); }
157
158inline TString AliMUONv2::QuadrantFLayerName(Int_t chamber) const
159{ return Form("%s%d",fgkQuadrantFLayerName,chamber); }
160
161inline void AliMUONv2::AddChamberGid(Int_t id,Int_t volName,Int_t idx)
162{ fChamberV2[id]->AddAt(volName,idx); }
ba030c0e 163
164
165#endif //ALI_MUON_V2_H