CGEM BOSS 6.6.5.i
BESIII Offline Software System
Loading...
Searching...
No Matches
BesCrystalParameterisation Class Reference

#include <BesCrystalParameterisation.hh>

+ Inheritance diagram for BesCrystalParameterisation:

Public Member Functions

 BesCrystalParameterisation (const G4int, const G4int, const G4int, BesEmcGeometry *, const G4int)
 
virtual ~BesCrystalParameterisation ()
 
void ComputeTransformation (const G4int, G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Box &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Tubs &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Trd &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Trap &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Cons &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Sphere &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Orb &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Torus &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Para &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Polycone &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Polyhedra &, const G4int, const G4VPhysicalVolume *) const
 
virtual void ComputeDimensions (G4Hype &, const G4int, const G4VPhysicalVolume *) const
 
G4Material * ComputeMaterial (const G4int, G4VPhysicalVolume *, const G4VTouchable *parentTouch=0)
 
G4VSolid * ComputeSolid (const G4int, G4VPhysicalVolume *)
 
void ComputeIDAndSide (const G4VPhysicalVolume *) const
 
void SetVerboseLevel (G4int val)
 

Detailed Description

Definition at line 23 of file BesCrystalParameterisation.hh.

Constructor & Destructor Documentation

◆ BesCrystalParameterisation()

BesCrystalParameterisation::BesCrystalParameterisation ( const G4int startID,
const G4int endID,
const G4int thetaAllCrystals,
BesEmcGeometry * besEMCGeometry,
const G4int verboseLevel )

Definition at line 23 of file BesCrystalParameterisation.cc.

29 :fVerboseLevel(0)
30{
31 //for debug
32 //G4Exception("BesCrystalParameterisation::BesCrystalParameterisation() starting........");
33 fBesEmcGeometry = besEMCGeometry;
34 fVerboseLevel = verboseLevel; //if need to debug this class,open it
35 fStartID = startID;
36 fAllCrystals = thetaAllCrystals;
37 fCrystalID = 0;
38 fFlagLeft = true;
39 if (startID>endID||endID>thetaAllCrystals||startID<1)
40 {
41 G4Exception("BesCrystalParameterisation construction: ID of crystal>No avaible!");
42 }
43
44}

◆ ~BesCrystalParameterisation()

BesCrystalParameterisation::~BesCrystalParameterisation ( )
virtual

Definition at line 48 of file BesCrystalParameterisation.cc.

49{}

Member Function Documentation

◆ ComputeDimensions() [1/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Box & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 37 of file BesCrystalParameterisation.hh.

39 {}

◆ ComputeDimensions() [2/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Cons & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 53 of file BesCrystalParameterisation.hh.

55 {}

◆ ComputeDimensions() [3/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Hype & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 81 of file BesCrystalParameterisation.hh.

83 {}

◆ ComputeDimensions() [4/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Orb & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 61 of file BesCrystalParameterisation.hh.

63 {}

◆ ComputeDimensions() [5/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Para & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 69 of file BesCrystalParameterisation.hh.

71 {}

◆ ComputeDimensions() [6/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Polycone & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 73 of file BesCrystalParameterisation.hh.

75 {}

◆ ComputeDimensions() [7/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Polyhedra & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 77 of file BesCrystalParameterisation.hh.

79 {}

◆ ComputeDimensions() [8/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Sphere & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 57 of file BesCrystalParameterisation.hh.

59 {}

◆ ComputeDimensions() [9/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Torus & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 65 of file BesCrystalParameterisation.hh.

67 {}

◆ ComputeDimensions() [10/12]

void BesCrystalParameterisation::ComputeDimensions ( G4Trap & trackerChamber,
const G4int copyNo,
const G4VPhysicalVolume * physVol ) const
virtual

Definition at line 110 of file BesCrystalParameterisation.cc.

113{
114 //for debug
115 //G4Exception("BesCrystalParameterisation::ComputeDimensions() starting........");
116 ComputeIDAndSide(physVol);
117
118 G4double zHalfLength = fBesEmcGeometry->GetZHalfLength(fCrystalID);
119 G4double thetaAxis = fBesEmcGeometry->GetThetaAxis(fCrystalID);
120 G4double phiAxis = fBesEmcGeometry->GetPhiAxis(fCrystalID);
121 G4double yHalfLength1 = fBesEmcGeometry->GetYHalfLength1(fCrystalID);
122 G4double xHalfLength1 = fBesEmcGeometry->GetXHalfLength1(fCrystalID);
123 G4double xHalfLength2 = fBesEmcGeometry->GetXHalfLength2(fCrystalID);
124 G4double tanAlpha1 = fBesEmcGeometry->GetTanAlpha1(fCrystalID);
125 G4double yHalfLength2 = fBesEmcGeometry->GetYHalfLength2(fCrystalID);
126 G4double xHalfLength3 = fBesEmcGeometry->GetXHalfLength3(fCrystalID);
127 G4double xHalfLength4 = fBesEmcGeometry->GetXHalfLength4(fCrystalID);
128 G4double tanAlpha2 = fBesEmcGeometry->GetTanAlpha2(fCrystalID);
129
130 if(!fFlagLeft)
131 {
132 phiAxis=-phiAxis;
133 tanAlpha1=-tanAlpha1;
134 tanAlpha2=-tanAlpha2;
135 G4double tmp;
136 tmp=xHalfLength1;
137 xHalfLength1=xHalfLength2;
138 xHalfLength2=tmp;
139 tmp=xHalfLength3;
140 xHalfLength3=xHalfLength4;
141 xHalfLength4=tmp;
142 }
143 if(fVerboseLevel>5)
144 G4cout << "The size of No." << copyNo << " crystal(placed) are:" << G4endl
145 << "zHalfLength =" << zHalfLength/cm << "(cm), " << G4endl
146 << "thetaAxis =" << thetaAxis/deg << "(degree), " << G4endl
147 << "phiAxis =" << phiAxis/deg << "(degree), " << G4endl
148 << "yHalfLength1=" << yHalfLength1/cm << "(cm), " << G4endl
149 << "xHalfLength1=" << xHalfLength1/cm << "(cm), " << G4endl
150 << "xHalfLength2=" << xHalfLength2/cm << "(cm), " << G4endl
151 << "tanAlpha1 =" << tanAlpha1 << "(), " << G4endl
152 << "yHalfLength2=" << yHalfLength2/cm << "(cm), " << G4endl
153 << "xHalfLength3=" << xHalfLength3/cm << "(cm), " << G4endl
154 << "xHalfLength4=" << xHalfLength4/cm << "(cm)." << G4endl
155 << "tanAlpha2 =" << tanAlpha2 << "(), " << G4endl
156 << "(x4-x3)*y1/(x2-x1)/y2="
157 << (xHalfLength4-xHalfLength3)*yHalfLength1/(xHalfLength2-xHalfLength1)/yHalfLength2 << G4endl
158 << "tanAlpha2/tanAlpha1=" << tanAlpha2/tanAlpha1 <<G4endl;
159 //G4cout << fStartID << "-->This is an output sentence for debug." << G4endl;
160
161 trackerChamber.SetAllParameters(
162 zHalfLength,
163 thetaAxis,
164 phiAxis,
165 yHalfLength1,
166 xHalfLength1,
167 xHalfLength2,
168 tanAlpha1,
169 yHalfLength2,
170 xHalfLength3,
171 xHalfLength4,
172 tanAlpha2);
173
174}
void ComputeIDAndSide(const G4VPhysicalVolume *) const
G4double GetZHalfLength(G4int NbCrystal)
G4double GetXHalfLength2(G4int NbCrystal)
G4double GetTanAlpha2(G4int NbCrystal)
G4double GetTanAlpha1(G4int NbCrystal)
G4double GetYHalfLength1(G4int NbCrystal)
G4double GetThetaAxis(G4int NbCrystal)
G4double GetXHalfLength4(G4int NbCrystal)
G4double GetYHalfLength2(G4int NbCrystal)
G4double GetXHalfLength1(G4int NbCrystal)
G4double GetPhiAxis(G4int NbCrystal)
G4double GetXHalfLength3(G4int NbCrystal)

◆ ComputeDimensions() [11/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Trd & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 45 of file BesCrystalParameterisation.hh.

47 {}

◆ ComputeDimensions() [12/12]

virtual void BesCrystalParameterisation::ComputeDimensions ( G4Tubs & ,
const G4int ,
const G4VPhysicalVolume *  ) const
inlinevirtual

Definition at line 41 of file BesCrystalParameterisation.hh.

43 {}

◆ ComputeIDAndSide()

void BesCrystalParameterisation::ComputeIDAndSide ( const G4VPhysicalVolume * pPhyVol) const

Definition at line 202 of file BesCrystalParameterisation.cc.

204{
205 //for debug
206 //G4Exception("BesCrystalParameterisation::ComputeIDAndSide() starting......");
207 G4int* pCrystalID=const_cast<G4int*>(&fCrystalID);
208 G4bool* pFlagLeft=const_cast<G4bool*>(&fFlagLeft);
209 G4int* pVerboseLevel=const_cast<G4int*>(&fVerboseLevel);
210
211 *pVerboseLevel=
213
214 //*pCrystalID=pPhyVol->GetMotherPhysical()->GetCopyNo();
215 *pCrystalID=-1;
216 for(G4int i=fStartID;i<=fAllCrystals;i++)
217 {
218 //G4cout << fBesEmcGeometry->GetPhysiBSCCrystal(i) << ".vs."
219 // << pPhyVol << G4endl;
220 if(fBesEmcGeometry->GetPhysiBSCCrystal(i)==pPhyVol)
221 {
222 *pCrystalID=i;
223 }
224 }
225 if(*pCrystalID==-1)
226 G4Exception("The point of PhysicCrystal error!!!!!!!!!!!");
227
228 //*pCrystalID=pPhyVol->GetCopyNo();
229 //if(fVerboseLevel>6)
230 //G4cout<<"******BesCrystalParameterisation::ComputeIDAndSide******"<<G4endl
231 // <<"point of pPhyVol =" << pPhyVol << G4endl
232 // <<"point of mother =" << pPhyVol->GetMother() << G4endl
233 // <<"CopyNo of pPhyVol=" << pPhyVol->GetCopyNo() << G4endl
234 // <<"CopyNo of mother =" << pPhyVol->GetMother()->GetCopyNo() << G4endl
235 // <<"********************************************************"<<G4endl;
236
237 if(fCrystalID>fAllCrystals/2)
238 {
239 *pFlagLeft=false;
240 *pCrystalID=fCrystalID-fAllCrystals/2;
241 }
242 else
243 {
244 *pFlagLeft=true;
245 *pCrystalID=fAllCrystals/2-fCrystalID+1;
246 }
247 *pCrystalID=*pCrystalID-1;
248}
static BesEmcConstruction * GetBesEmcConstruction()
G4VPhysicalVolume * GetPhysiBSCCrystal(G4int NbCrystal)

Referenced by ComputeDimensions(), ComputeMaterial(), ComputeSolid(), and ComputeTransformation().

◆ ComputeMaterial()

G4Material * BesCrystalParameterisation::ComputeMaterial ( const G4int copyNo,
G4VPhysicalVolume * pPhysicalVol,
const G4VTouchable * parentTouch = 0 )

Definition at line 185 of file BesCrystalParameterisation.cc.

187{
188 if(0) G4cout<<copyNo<<parentTouch<<G4endl;
189 ComputeIDAndSide(pPhysicalVol);
190 G4int nBSCTheta=fBesEmcGeometry->GetBSCNbTheta();
191 //if(fVerboseLevel>5)
192 //G4cout <<"******BesCrystalParameterisation::ComputeMaterial******"<<G4endl
193 // <<"Number of all crystals=" << nBSCTheta << G4endl
194 // <<"No of current crystal =" << pPhysicalVol->GetCopyNo() << G4endl
195 // <<"*******************************************************"<<G4endl;
196 if(pPhysicalVol->GetCopyNo()>2*nBSCTheta)
198 else
200}
G4Material * GetCasingMaterial()
G4Material * GetCrystalMaterial()

◆ ComputeSolid()

G4VSolid * BesCrystalParameterisation::ComputeSolid ( const G4int copyNo,
G4VPhysicalVolume * pPhysicalVol )

Definition at line 177 of file BesCrystalParameterisation.cc.

179{
180 if(0) G4cout<<copyNo<<G4endl;
181 ComputeIDAndSide(pPhysicalVol);
182 return pPhysicalVol->GetLogicalVolume()->GetSolid();
183}

◆ ComputeTransformation()

void BesCrystalParameterisation::ComputeTransformation ( const G4int copyNo,
G4VPhysicalVolume * physVol ) const

Definition at line 53 of file BesCrystalParameterisation.cc.

55{
56 //for debug
57 //G4Exception("BesCrystalParameterisation::ComputeTransformation() starting........");
58 ComputeIDAndSide(physVol);
59
60 if(fVerboseLevel>3)
61 {
62 G4cout<<"*BesCrystalParameterisation::ComputeTransformation()*"<<G4endl;
63 G4cout << "copyNo(transfered)=" << copyNo << G4endl
64 << "copyNo(gotten) =" << physVol->GetCopyNo() << G4endl
65 << "fStartID =" << fStartID << G4endl
66 << "fCrystalID =" << fCrystalID << G4endl;
67 G4cout << "point of fBesEmcGeometry=" << fBesEmcGeometry << G4endl;
68 }
69
70 G4double xPosition= fBesEmcGeometry->GetXPosition(fCrystalID);
71 G4double yPosition= fBesEmcGeometry->GetYPosition(fCrystalID);
72 G4double zPosition= fBesEmcGeometry->GetZPosition(fCrystalID);
73 //G4Exception("BesCrystalParameterisation::ComputeTransformation() running........");
74 //G4double xPosition=0,yPosition=0,zPosition=0;
75 if(fFlagLeft) zPosition=-zPosition;
76 G4ThreeVector origin(xPosition,yPosition,zPosition);
77 physVol->SetTranslation(origin);
78
79 //G4double thetaPosition=fBesEmcGeometry->GetThetaPosition(fCrystalID);
80 //G4RotationMatrix *rotateMatrix;
81 //rotateMatrix = new G4RotationMatrix();
82 //if(fFlagLeft)
83 // {
84 // rotateMatrix->rotateZ(-90*deg);
85 // rotateMatrix->rotateX(-180*deg+thetaPosition);
86 // }
87 //else
88 // {
89 // rotateMatrix->rotateZ(-90*deg);
90 // rotateMatrix->rotateX(-thetaPosition);
91 // }
92 //G4double delta = 0*deg;
93 //G4ThreeVector axis = G4ThreeVector(0,0,0);
94 //rotateMatrix->getAngleAxis(delta, axis);
95 if(fVerboseLevel>5)
96 {
97 G4cout << "The crystals are at the position:" << G4endl
98 << origin/cm <<"(cm)" << G4endl;
99 //G4cout << thetaPosition/deg <<"(deg)." << G4endl
100 //<< "The axis of crystals in the world system is: " << G4endl
101 //<< delta/deg << "(deg)(delta) " << G4endl
102 //<< axis << "(Z axis)" << G4endl;
103 }
104 //physVol->SetRotation(rotateMatrix);
105
106}
const DifPoint origin
G4double GetYPosition(G4int NbCrystal)
G4double GetXPosition(G4int NbCrystal)
G4double GetZPosition(G4int NbCrystal)

◆ SetVerboseLevel()

void BesCrystalParameterisation::SetVerboseLevel ( G4int val)
inline

Definition at line 91 of file BesCrystalParameterisation.hh.

91{fVerboseLevel=val;};

The documentation for this class was generated from the following files: