| 1 |
formato |
1.1 |
#include <fstream> |
| 2 |
|
|
#include "TMath.h" |
| 3 |
|
|
#include "TGeoBBox.h" |
| 4 |
|
|
#include "PamVMCDetTrk.h" |
| 5 |
|
|
|
| 6 |
|
|
using TMath::RadToDeg; |
| 7 |
|
|
|
| 8 |
|
|
ClassImp(PamVMCDetTrk) |
| 9 |
|
|
|
| 10 |
|
|
void PamVMCDetTrk::DefineGeometry(){ |
| 11 |
|
|
|
| 12 |
|
|
TGeoMaterial *m=0; |
| 13 |
|
|
TGeoMixture *mx =0; |
| 14 |
|
|
TString s = "ALUMINIUM"; |
| 15 |
|
|
m = GetMat(s); |
| 16 |
|
|
if(!m){ |
| 17 |
|
|
m = new TGeoMaterial(s,26.98,13,2.7); |
| 18 |
|
|
m->SetUniqueID( 9); |
| 19 |
|
|
} |
| 20 |
|
|
|
| 21 |
|
|
s = "IRON"; |
| 22 |
|
|
m = GetMat(s); |
| 23 |
|
|
if(!m){ |
| 24 |
|
|
m = new TGeoMaterial(s,55.85,26,7.87); |
| 25 |
|
|
m->SetUniqueID( 10); |
| 26 |
|
|
} |
| 27 |
|
|
|
| 28 |
|
|
|
| 29 |
|
|
s = "N2GAS"; |
| 30 |
|
|
m = GetMat(s); |
| 31 |
|
|
if (!m){ |
| 32 |
|
|
m = new TGeoMaterial(s,14.01,7,0.1250000E-02); |
| 33 |
|
|
m->SetUniqueID( 19); |
| 34 |
|
|
} |
| 35 |
|
|
|
| 36 |
|
|
s = "SILICON TR"; |
| 37 |
|
|
m= GetMat(s); |
| 38 |
|
|
if(!m){ |
| 39 |
|
|
m = new TGeoMaterial(s,28.09,14,2.33); |
| 40 |
|
|
m->SetUniqueID( 20); |
| 41 |
|
|
} |
| 42 |
|
|
|
| 43 |
|
|
s = "G10C"; |
| 44 |
|
|
mx = (TGeoMixture*)GetMat(s); |
| 45 |
|
|
if(!mx){ |
| 46 |
|
|
mx = new TGeoMixture(s,4, 1.70000 ); |
| 47 |
|
|
mx->SetUniqueID( 27); |
| 48 |
|
|
mx->DefineElement(0,28.09,14,0.53); |
| 49 |
|
|
mx->DefineElement(1,16,8,0.3); |
| 50 |
|
|
mx->DefineElement(2,12.01,6,0.15); |
| 51 |
|
|
mx->DefineElement(3,1.01,1,0.2000000E-01); |
| 52 |
|
|
} |
| 53 |
|
|
|
| 54 |
|
|
s = "SBAR"; |
| 55 |
|
|
mx = (TGeoMixture*)GetMat(s); |
| 56 |
|
|
if(!mx){ |
| 57 |
|
|
mx = new TGeoMixture(s,3, 1.49000 ); |
| 58 |
|
|
mx->SetUniqueID( 40); |
| 59 |
|
|
//Carbon fiber 90%, Resin 10% |
| 60 |
|
|
mx->DefineElement(0,12.01,6,0.845*0.9+0.545*0.1); //C |
| 61 |
|
|
mx->DefineElement(1,1.01,1,0.043*0.9+0.092*0.1); //H |
| 62 |
|
|
mx->DefineElement(2,16.0,8,0.112*0.9+0.363*0.1); //O |
| 63 |
|
|
} |
| 64 |
|
|
|
| 65 |
|
|
|
| 66 |
|
|
TGeoMedium * n = 0; |
| 67 |
|
|
|
| 68 |
|
|
s="ALUMINIUM"; |
| 69 |
|
|
n = (GetMed(s))?GetMed(s): new TGeoMedium(s,1,9,-1,1,40,1,100,0.5000000E-01,0.136283,0.5000000E-03); |
| 70 |
|
|
|
| 71 |
|
|
s = "N2 GAS"; |
| 72 |
|
|
n = (GetMed(s))?GetMed(s): new TGeoMedium(s,3,19,-1,1,40,1,0.5000000E-01,0.5000000E-01,0.1000000E-02,0.5000000E-03); |
| 73 |
|
|
|
| 74 |
|
|
s = "IRONTR"; |
| 75 |
|
|
n = (GetMed(s))?GetMed(s): new TGeoMedium(s,5,10,-1,1,40,1,0.5000000E-01,0.5000000E-01,0.8000000E-01,0.5000000E-03); |
| 76 |
|
|
|
| 77 |
|
|
s = "FIBER+RESIN"; |
| 78 |
|
|
n = (GetMed(s))?GetMed(s): new TGeoMedium(s,29,40,-1,1,40,1,100,0.5000000E-01,0.5000000E-02,0.5000000E-03); |
| 79 |
|
|
|
| 80 |
|
|
s = "SITRACKER"; |
| 81 |
|
|
n = (GetMed(s))?GetMed(s): new TGeoMedium(s,12,20,1,1,40,1,0.1000000E-02,0.5000000E-01,0.5000000E-04,0.1569056E-01); |
| 82 |
|
|
|
| 83 |
|
|
s = "G10C"; |
| 84 |
|
|
n = (GetMed(s))?GetMed(s):new TGeoMedium(s,17,27,-1,1,40,1,100,0.5000000E-01,0.1200000E-02,0.5000000E-03); |
| 85 |
|
|
|
| 86 |
|
|
TGeoVolume *v = 0; |
| 87 |
|
|
|
| 88 |
|
|
|
| 89 |
|
|
s = "SPEB"; |
| 90 |
|
|
v = (GetVol(s))?GetVol(s):gGeoManager->MakeBox(s,GetMed("N2 GAS"),15.,14.4,22.615); |
| 91 |
|
|
for(Int_t i = 1; i<=5; i++){ |
| 92 |
|
|
s = "MGF"; |
| 93 |
|
|
s += i; |
| 94 |
|
|
v = (GetVol(s))?GetVol(s):gGeoManager->MakeBox(s,GetMed("ALUMINIUM"),15.,14.4,4.45); |
| 95 |
|
|
} |
| 96 |
|
|
s = "MGPL"; |
| 97 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("IRONTR"),12.,11.4,4.); |
| 98 |
|
|
s = "MGPI"; |
| 99 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("N2 GAS"),8.07,6.57,4.); |
| 100 |
|
|
for(Int_t i = 1; i<=6; i++){ |
| 101 |
|
|
s = "TRP"; |
| 102 |
|
|
s += i; |
| 103 |
|
|
v = (GetVol(s))?GetVol(s):gGeoManager->MakeBox(s,GetMed("ALUMINIUM"),10.49,12.15,0.365); |
| 104 |
|
|
} |
| 105 |
|
|
for(Int_t i = 1; i<=6; i++){ |
| 106 |
|
|
s = "TPA"; |
| 107 |
|
|
s += i; |
| 108 |
|
|
v = (GetVol(s))?GetVol(s):gGeoManager->MakeBox(s,GetMed("N2 GAS"),8.2,9.9,0.365); |
| 109 |
|
|
} |
| 110 |
|
|
s = "TPAI"; |
| 111 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("ALUMINIUM"),8.144,1.25,0.5E-01); |
| 112 |
|
|
s = "TRSL"; |
| 113 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("SITRACKER"),2.6665,3.5,0.15E-01); |
| 114 |
|
|
s = "THBP"; |
| 115 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("G10C"),2.6665,2.75,0.15E-01); |
| 116 |
|
|
s = "TSPA"; |
| 117 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("SITRACKER"),2.596,3.413,0.15E-01); |
| 118 |
|
|
s = "TRCP"; |
| 119 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("FIBER+RESIN"),0.35E-01,9.9,0.25); |
| 120 |
|
|
s = "TBAL"; |
| 121 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("ALUMINIUM"),1.49,2.25,0.365); |
| 122 |
|
|
s = "MGPA"; |
| 123 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("ALUMINIUM"),8.1,6.6,4.); |
| 124 |
|
|
s = "TPGA"; |
| 125 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("N2 GAS"),10.29,10.65,0.4E-01); |
| 126 |
|
|
s = "TPGI"; |
| 127 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("N2 GAS"),8.07,6.57,0.15E-01); |
| 128 |
|
|
s = "TPGU"; |
| 129 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("N2 GAS"),10.49,12.15,0.1E-01); |
| 130 |
|
|
s = "TPGD"; |
| 131 |
|
|
v = (GetVol(s))?GetVol(s): gGeoManager->MakeBox(s,GetMed("N2 GAS"),12.,11.4,0.5E-02); |
| 132 |
|
|
|
| 133 |
|
|
|
| 134 |
|
|
ReadPaddlesPos(); |
| 135 |
|
|
|
| 136 |
|
|
//Original, not shifted positions of the paddles TRSL respect to TPAs volumes. |
| 137 |
|
|
Double_t x14,x36,x25, y123, y456, za; |
| 138 |
|
|
x36 = 5.405; |
| 139 |
|
|
x14 = -x36; |
| 140 |
|
|
x25 = 0.; |
| 141 |
|
|
y123 = 6.252; |
| 142 |
|
|
y456 = -0.75; |
| 143 |
|
|
za = 0.15E-01; |
| 144 |
|
|
Double_t xp[6] = {x14, x25, x36, x14, x25, x36}; |
| 145 |
|
|
Double_t yp[6] = {y123, y123, y123, y456, y456, y456}; |
| 146 |
|
|
Double_t x,y,z; |
| 147 |
|
|
|
| 148 |
|
|
|
| 149 |
|
|
GetVol("TRSL")->AddNode(GetVol("TSPA"),1,gGeoIdentity); //adding sensetive detector first |
| 150 |
|
|
GetVol("MGPL")->AddNode(GetVol("MGPA"),1,gGeoIdentity); |
| 151 |
|
|
GetVol("MGPA")->AddNode(GetVol("MGPI"),1,gGeoIdentity); |
| 152 |
|
|
|
| 153 |
|
|
Double_t zMGF = ((TGeoBBox*)GetVol("SPEB")->GetShape())->GetDZ(); |
| 154 |
|
|
for(Int_t i = 1; i<=6; i++){ |
| 155 |
|
|
Int_t rot_id, j; |
| 156 |
|
|
TString ss="TRP"; |
| 157 |
|
|
if( i<6 ){ |
| 158 |
|
|
s = "MGF"; |
| 159 |
|
|
s += i; |
| 160 |
|
|
zMGF -= ((TGeoBBox*)GetVol(s)->GetShape())->GetDZ(); |
| 161 |
|
|
GetVol("SPEB")->AddNode(GetVol( s ),1,new TGeoTranslation(0.,0., zMGF )); |
| 162 |
|
|
zMGF -= ((TGeoBBox*)GetVol(s)->GetShape())->GetDZ(); |
| 163 |
|
|
GetVol( s )->AddNode(GetVol("TPGD"),1,new TGeoTranslation(0.,0.,-4.445)); |
| 164 |
|
|
GetVol( s )->AddNode(GetVol("TPGI"),1,new TGeoTranslation(0.,0.,-4.425)); |
| 165 |
|
|
GetVol( s )->AddNode(GetVol("MGPL"),1,new TGeoTranslation(0.,0.,-0.41)); |
| 166 |
|
|
GetVol( s )->AddNode(GetVol("TPGI"),2,new TGeoTranslation(0.,0.,3.605)); |
| 167 |
|
|
GetVol( s )->AddNode(GetVol("TPGA"),1,new TGeoTranslation(0.,-0.75,3.66)); |
| 168 |
|
|
ss += i; |
| 169 |
|
|
GetVol( s )->AddNode(GetVol( ss ),1,new TGeoTranslation(dxflo[i-1], -2.25 + dyflo[i-1], 4.065)); |
| 170 |
|
|
} else { |
| 171 |
|
|
s = "SPEB"; |
| 172 |
|
|
ss += i; |
| 173 |
|
|
GetVol( s )->AddNode(GetVol( ss ),1,new TGeoCombiTrans(dxflo[i-1], 2.25 + dyflo[i-1], -22.25, GetRot("rot10"))); |
| 174 |
|
|
} |
| 175 |
|
|
s = "TPA"; |
| 176 |
|
|
s += i; |
| 177 |
|
|
GetVol( ss )->AddNode(GetVol( s ),i,new TGeoTranslation(0.,-0.75,0.)); |
| 178 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("TRCP"),1,new TGeoTranslation(-8.1075,0.,0.15E-01)); |
| 179 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("TRCP"),2,new TGeoTranslation(-2.7025,0.,0.15E-01)); |
| 180 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("TRCP"),3,new TGeoTranslation(2.7025,0.,0.15E-01)); |
| 181 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("TRCP"),4,new TGeoTranslation(8.1075,0.,0.15E-01)); |
| 182 |
|
|
//paddles// |
| 183 |
|
|
j = (i-1)*NP_TRK + 1; |
| 184 |
|
|
Int_t kk; |
| 185 |
|
|
|
| 186 |
|
|
for(Int_t pad = 0; pad<6; pad++){ |
| 187 |
|
|
ss = "rot_"; |
| 188 |
|
|
rot_id = 50 + j; |
| 189 |
|
|
ss += rot_id; |
| 190 |
|
|
if(i<6) kk = pad; |
| 191 |
|
|
else{ |
| 192 |
|
|
j = (i-1)*NP_TRK + pad + 1; |
| 193 |
|
|
if(pad<=2) |
| 194 |
|
|
kk= 3+pad; |
| 195 |
|
|
else |
| 196 |
|
|
kk = pad-3; |
| 197 |
|
|
|
| 198 |
|
|
ss = "rot_"; |
| 199 |
|
|
rot_id = 50 + kk + (i-1)*NP_TRK + 1; |
| 200 |
|
|
ss += rot_id; |
| 201 |
|
|
(fctmap.find(rot_id - 50)->second)->fdy *=-1.; |
| 202 |
|
|
(fctmap.find(rot_id - 50)->second)->fdz *=-1.; |
| 203 |
|
|
//cout<<"kk+1="<<kk+1<<"j="<<j<<endl; |
| 204 |
|
|
} |
| 205 |
|
|
x = xp[pad] + (fctmap.find(rot_id - 50)->second)->fdx; |
| 206 |
|
|
y = yp[pad] + (fctmap.find(rot_id - 50)->second)->fdy; |
| 207 |
|
|
z = za + (fctmap.find(rot_id - 50)->second)->fdz; |
| 208 |
|
|
|
| 209 |
|
|
//cout<<"plane ="<<i<<" TRSL="<<j<<"x,y,z"<<x<<","<<y<<","<<z<<"RotName"<<ss<<endl; |
| 210 |
|
|
GetVol( s )->AddNode(GetVol("TRSL"),j ,new TGeoCombiTrans( x,y,z, GetRot( ss ))); |
| 211 |
|
|
j++; |
| 212 |
|
|
} |
| 213 |
|
|
|
| 214 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("THBP"),1,new TGeoTranslation(-5.405,-7.0015,0.15E-01)); |
| 215 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("THBP"),2,new TGeoTranslation(0.,-7.0015,0.15E-01)); |
| 216 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("THBP"),3,new TGeoTranslation(5.405,-7.0015,0.15E-01)); |
| 217 |
|
|
GetVol( s )->AddNodeOverlap(GetVol("TPAI"),1,new TGeoTranslation(0.,-8.65,0.315)); |
| 218 |
|
|
|
| 219 |
|
|
if(i<6){ |
| 220 |
|
|
s = "MGF"; |
| 221 |
|
|
s += i; |
| 222 |
|
|
GetVol( s )->AddNode(GetVol("TPGU"),1,new TGeoTranslation(0.,-2.25,4.44)); |
| 223 |
|
|
} |
| 224 |
|
|
} |
| 225 |
|
|
|
| 226 |
|
|
GetVol("SPEB")->AddNode(GetVol("TBAL"),1,new TGeoTranslation(5.4,-12.15,-22.25)); |
| 227 |
|
|
GetVol("SPEB")->AddNode(GetVol("TBAL"),2,new TGeoTranslation(-5.4,-12.15,-22.25)); |
| 228 |
|
|
|
| 229 |
|
|
|
| 230 |
|
|
SetMotherProp(GetVol("SPEB"),1,new TGeoTranslation(0.,0.,49.274)); |
| 231 |
|
|
}; |
| 232 |
|
|
|
| 233 |
|
|
void PamVMCDetTrk::DefineCuts(){ |
| 234 |
|
|
|
| 235 |
|
|
TString s ="ALUMINIUM"; // default GPAMELA parameters |
| 236 |
|
|
if (GetMed(s) && !GetCC(s)) |
| 237 |
|
|
SetCC(s, new pCutControl(GetMedID(s), 0.0001, 0.001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, |
| 238 |
|
|
0.001, 0.01, 1., 1., 1., 0., 1., 1., 1., 4., 1., 1., 1., 1.)); |
| 239 |
|
|
s ="N2 GAS"; |
| 240 |
|
|
if (GetMed(s) && !GetCC(s)) |
| 241 |
|
|
SetCC(s, new pCutControl(GetMedID(s), 0.0001, 0.001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, |
| 242 |
|
|
0.001, 0.01, 1., 1., 1., 0., 0., 1., 1., 4., 1., 1., 2., 1.)); |
| 243 |
|
|
s = "IRONTR"; // default GPAMELA parameters |
| 244 |
|
|
if (GetMed(s) && !GetCC(s)) |
| 245 |
|
|
SetCC(s, new pCutControl(GetMedID(s), 0.0001, 0.001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, |
| 246 |
|
|
0.001, 0.01, 1., 1., 1., 0., 1., 1., 1., 4., 1., 1., 1., 1.)); |
| 247 |
|
|
s = "SITRACKER"; |
| 248 |
|
|
if (GetMed(s) && !GetCC(s)) |
| 249 |
|
|
SetCC(s, new pCutControl(GetMedID(s), 0.0001, 0.001, 0.00001, 0.00001, 0.0001, 0.0001, 0.00001, 0.00001, |
| 250 |
|
|
0.001, 0.01, 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 2.)); |
| 251 |
|
|
s = "FIBER+RESIN"; |
| 252 |
|
|
if (GetMed(s) && !GetCC(s)) // default GPAMELA parameters |
| 253 |
|
|
SetCC(s, new pCutControl(GetMedID(s), 0.0001, 0.001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, |
| 254 |
|
|
0.001, 0.01, 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1.)); |
| 255 |
|
|
|
| 256 |
|
|
s = "G10C"; |
| 257 |
|
|
if (GetMed(s) && !GetCC(s)) |
| 258 |
|
|
SetCC(s, new pCutControl(GetMedID(s), 0.00001, 0.00001, 0.00001, 0.00001, 0.001, 0.001, 0.01, 0.00001, |
| 259 |
|
|
0.00001, 0.01, 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 2.)); |
| 260 |
|
|
} |
| 261 |
|
|
|
| 262 |
|
|
void PamVMCDetTrk::ReadPaddlesPos(){ |
| 263 |
|
|
//This method reads from file rotations and shifts of the paddles |
| 264 |
|
|
//The format is: Omega, Beta, Gamma, dx, dy, dz |
| 265 |
|
|
|
| 266 |
|
|
cout<<"Loading POS files for TRK sensors..."<<endl; |
| 267 |
|
|
ifstream fcfile; |
| 268 |
|
|
TString PAM_VMC=gSystem->Getenv("PAM_VMC"); |
| 269 |
|
|
TString PLATFORM=gSystem->Getenv("PLATFORM"); |
| 270 |
|
|
TString PATH=PAM_VMC+"/lib/tgt_"+PLATFORM+"/parameters_l"; |
| 271 |
|
|
Int_t ls, ss; |
| 272 |
|
|
|
| 273 |
|
|
TMap rotshiftmap; |
| 274 |
|
|
|
| 275 |
|
|
for(Int_t ik = 1; ik<=NP_TRK; ik++){ |
| 276 |
|
|
TString filename = PATH; |
| 277 |
|
|
if( ik < 4 ){ |
| 278 |
|
|
ls = ik; |
| 279 |
|
|
ss = 2; |
| 280 |
|
|
} else{ |
| 281 |
|
|
ls = ik-3; |
| 282 |
|
|
ss = 1; |
| 283 |
|
|
} |
| 284 |
|
|
filename += ls; |
| 285 |
|
|
filename += "s"; |
| 286 |
|
|
filename += ss; |
| 287 |
|
|
filename += ".dat"; |
| 288 |
|
|
cout<<" loading: "<<filename<<endl; |
| 289 |
|
|
fcfile.open(filename); |
| 290 |
|
|
if(!fcfile){ |
| 291 |
|
|
cout<<" !!! ERROR, file "<<filename<<" is missed...exiting"<<endl; |
| 292 |
|
|
exit(-1); |
| 293 |
|
|
} |
| 294 |
|
|
//reading from file, create structures and put them in array |
| 295 |
|
|
|
| 296 |
|
|
Double_t om, be, ga, dx, dy, dz; |
| 297 |
|
|
for (Int_t ih = 1; ih <= NP_TRK; ih++){ |
| 298 |
|
|
fcfile >> om; |
| 299 |
|
|
fcfile >> be; |
| 300 |
|
|
fcfile >> ga; |
| 301 |
|
|
fcfile >> dx; |
| 302 |
|
|
fcfile >> dy; |
| 303 |
|
|
fcfile >> dz; |
| 304 |
|
|
|
| 305 |
|
|
Int_t ii = (6-ih)*6 +ik; |
| 306 |
|
|
fctmap[ii] = new pCombTrans( om, be, ga, dx, dy, dz ); |
| 307 |
|
|
} |
| 308 |
|
|
fcfile.close(); |
| 309 |
|
|
} |
| 310 |
|
|
|
| 311 |
|
|
for (Int_t ij = 1; ij<=6; ij++){ |
| 312 |
|
|
dxflo[ij-1] = dyflo[ij-1] = 0.; |
| 313 |
|
|
for (Int_t il = 1; il<=6; il++){ |
| 314 |
|
|
Int_t ii = (ij-1)*6+il; |
| 315 |
|
|
dxflo[ij-1] += (fctmap.find(ii)->second)->fdx; |
| 316 |
|
|
dyflo[ij-1] += (fctmap.find(ii)->second)->fdy; |
| 317 |
|
|
} |
| 318 |
|
|
dxflo[ij-1] /=6.; |
| 319 |
|
|
dyflo[ij-1] /=6.; |
| 320 |
|
|
} |
| 321 |
|
|
|
| 322 |
|
|
for (Int_t ij = 1; ij<=6; ij++){ |
| 323 |
|
|
for (Int_t il = 1; il<=6; il++){ |
| 324 |
|
|
Int_t ii = (ij-1)*6+il; |
| 325 |
|
|
(fctmap.find(ii)->second)->fdx = ( (fctmap.find(ii)->second)->fdx - dxflo[ij-1] )*1.E-4; |
| 326 |
|
|
(fctmap.find(ii)->second)->fdy = ( (fctmap.find(ii)->second)->fdy - dyflo[ij-1] )*1.E-4; |
| 327 |
|
|
(fctmap.find(ii)->second)->fdz = ( (fctmap.find(ii)->second)->fdz - 100. )*1.E-4; |
| 328 |
|
|
} |
| 329 |
|
|
dxflo[ij-1] *= 1.E-4; |
| 330 |
|
|
dyflo[ij-1] *= 1.E-4; |
| 331 |
|
|
} |
| 332 |
|
|
|
| 333 |
|
|
for (Int_t ij = 1; ij<=6; ij++){ |
| 334 |
|
|
for (Int_t il = 1; il<=6; il++){ |
| 335 |
|
|
Int_t ii = (ij-1)*6+il; |
| 336 |
|
|
|
| 337 |
|
|
Double_t om_1 = (fctmap.find(ii)->second)->fomega * 1.E-6; |
| 338 |
|
|
Double_t be_1 = (fctmap.find(ii)->second)->fbeta * 1.E-6; |
| 339 |
|
|
Double_t ga_1 = (fctmap.find(ii)->second)->fgamma * 1.E-6; |
| 340 |
|
|
|
| 341 |
|
|
if(ij==6){ |
| 342 |
|
|
om_1 = -om_1; |
| 343 |
|
|
ga_1 = -ga_1; |
| 344 |
|
|
} |
| 345 |
|
|
|
| 346 |
|
|
TVector3 rot1(1.,om_1, -ga_1), rot2(-om_1,1.,be_1), rot3(ga_1,-be_1,1.); |
| 347 |
|
|
Int_t rot_no = 50 + ii; |
| 348 |
|
|
TString nmrot = "rot_"; |
| 349 |
|
|
nmrot += rot_no; |
| 350 |
|
|
|
| 351 |
|
|
AddRot(nmrot.Data(), new TGeoRotation( nmrot.Data(), |
| 352 |
|
|
rot1.Theta()*RadToDeg(),rot1.Phi()*RadToDeg(), |
| 353 |
|
|
rot2.Theta()*RadToDeg(),rot2.Phi()*RadToDeg(), |
| 354 |
|
|
rot3.Theta()*RadToDeg(),rot3.Phi()*RadToDeg() )); |
| 355 |
|
|
//cout<<"plno:"<<ij<<" padno:"<<il |
| 356 |
|
|
// <<" t1:"<<rot1.Theta()*RadToDeg()<<" p1:"<<rot1.Phi()*RadToDeg() |
| 357 |
|
|
// <<" t2:"<<rot2.Theta()*RadToDeg()<<" p2:"<<rot2.Phi()*RadToDeg() |
| 358 |
|
|
// <<" t3:"<<rot3.Theta()*RadToDeg()<<" p3:"<<rot3.Phi()*RadToDeg() <<endl; |
| 359 |
|
|
} |
| 360 |
|
|
} |
| 361 |
|
|
} |
| 362 |
|
|
|
| 363 |
|
|
|