// --- Standard libraries ---
#include <Riostream.h>
-#include <stdlib.h>
-#include <string.h>
// --- ROOT libraries ---
#include <TClonesArray.h>
-#include <TGeometry.h>
-#include <TLorentzVector.h>
#include <TMath.h>
-#include <TNode.h>
-#include <TObjectTable.h>
#include <TVirtualMC.h>
#include <TParticle.h>
#include <TGeoManager.h>
#include <TGeoMaterial.h>
#include <TGeoMedium.h>
-#include <TGeoNode.h>
#include <TGeoVolume.h>
#include "TGeoTube.h"
#include "TGeoArb8.h"
-#include "TGeoMatrix.h"
#include "TGeoCompositeShape.h"
// --- AliRoot header files ---
#include "AliRun.h"
#include "AliMC.h"
-#include "AliConst.h"
#include "AliMagF.h"
#include "AliVZEROLoader.h"
#include "AliVZEROdigit.h"
double cos225 = TMath::Cos(pi/8.);
double ctg225 = cos225/sin225;
double sin45 = TMath::Sin(pi/4.); // lucky: Sin45=Cos45
- double V0APts[16];
+ double v0APts[16];
////////////////////////////
/// Definition of one sector
- TGeoVolume *V0ASec = new TGeoVolumeAssembly("V0ASec");
+ TGeoVolume *v0ASec = new TGeoVolumeAssembly("V0ASec");
/// For boolean sustraction
double preShape = 0.2;
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR0-fV0AFraWd/2.-preShape; V0APts[1+8*i] = -preShape;
- V0APts[2+8*i] = fV0AR0-fV0AFraWd/2.-preShape; V0APts[3+8*i] = fV0AFraWd/2.;
- V0APts[4+8*i] = fV0AR4+fV0AFraWd/2.+preShape; V0APts[5+8*i] = fV0AFraWd/2.;
- V0APts[6+8*i] = fV0AR4+fV0AFraWd/2.+preShape; V0APts[7+8*i] = -preShape;
+ v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.-preShape; v0APts[1+8*i] = -preShape;
+ v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.-preShape; v0APts[3+8*i] = fV0AFraWd/2.;
+ v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.+preShape; v0APts[5+8*i] = fV0AFraWd/2.;
+ v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.+preShape; v0APts[7+8*i] = -preShape;
}
- new TGeoArb8("sV0ACha1",fV0ASciWd/1.5,V0APts);
+ new TGeoArb8("sV0ACha1",fV0ASciWd/1.5,v0APts);
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR0*sin45-preShape;
- V0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45-preShape;
- V0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45-preShape;
- V0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
- V0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+preShape;
- V0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+2.*preShape;
- V0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45+preShape;
- V0APts[7+8*i] = fV0AR4*sin45+preShape;
+ v0APts[0+8*i] = fV0AR0*sin45-preShape;
+ v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45-preShape;
+ v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45-preShape;
+ v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
+ v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+preShape;
+ v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+2.*preShape;
+ v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45+preShape;
+ v0APts[7+8*i] = fV0AR4*sin45+preShape;
}
- new TGeoArb8("sV0ACha2", fV0ASciWd/2.+2.*preShape, V0APts);
+ new TGeoArb8("sV0ACha2", fV0ASciWd/2.+2.*preShape, v0APts);
new TGeoCompositeShape("sV0ACha","sV0ACha1+sV0ACha2");
/// Frame
- TGeoVolume *V0AFra = new TGeoVolumeAssembly("V0AFra");
+ TGeoVolume *v0AFra = new TGeoVolumeAssembly("V0AFra");
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; V0APts[1+8*i] = 0.;
- V0APts[2+8*i] = fV0AR0-fV0AFraWd/2.; V0APts[3+8*i] = fV0AFraWd/2.;
- V0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; V0APts[5+8*i] = fV0AFraWd/2.;
- V0APts[6+8*i] = fV0AR4+fV0AFraWd/2.; V0APts[7+8*i] = 0.;
+ v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[1+8*i] = 0.;
+ v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[3+8*i] = fV0AFraWd/2.;
+ v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[5+8*i] = fV0AFraWd/2.;
+ v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[7+8*i] = 0.;
}
- TGeoArb8 *sV0AFraB1 = new TGeoArb8("sV0AFraB1",fV0ASciWd/2.,V0APts);
- TGeoVolume *V0AFraB1 = new TGeoVolume("V0AFraB1",sV0AFraB1,medV0AFra);
+ TGeoArb8 *sV0AFraB1 = new TGeoArb8("sV0AFraB1",fV0ASciWd/2.,v0APts);
+ TGeoVolume *v0AFraB1 = new TGeoVolume("V0AFraB1",sV0AFraB1,medV0AFra);
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR0*sin45;
- V0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45;
- V0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
- V0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
- V0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
- V0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
- V0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45;
- V0APts[7+8*i] = fV0AR4*sin45;
+ v0APts[0+8*i] = fV0AR0*sin45;
+ v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45;
+ v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
+ v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
+ v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
+ v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
+ v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45;
+ v0APts[7+8*i] = fV0AR4*sin45;
}
- TGeoArb8 *sV0AFraB2 = new TGeoArb8("sV0AFraB2", fV0ASciWd/2., V0APts);
- TGeoVolume *V0AFraB2 = new TGeoVolume("V0AFraB2",sV0AFraB2,medV0AFra);
- V0AFraB1->SetLineColor(kV0AColorFra); V0AFraB2->SetLineColor(kV0AColorFra);
- V0AFra->AddNode(V0AFraB1,1);
- V0AFra->AddNode(V0AFraB2,1); // Prefer 2 GeoObjects insted of 3 GeoMovements
+ TGeoArb8 *sV0AFraB2 = new TGeoArb8("sV0AFraB2", fV0ASciWd/2., v0APts);
+ TGeoVolume *v0AFraB2 = new TGeoVolume("V0AFraB2",sV0AFraB2,medV0AFra);
+ v0AFraB1->SetLineColor(kV0AColorFra); v0AFraB2->SetLineColor(kV0AColorFra);
+ v0AFra->AddNode(v0AFraB1,1);
+ v0AFra->AddNode(v0AFraB2,1); // Prefer 2 GeoObjects insted of 3 GeoMovements
new TGeoTubeSeg( "sV0AFraR1b", fV0AR0-fV0AFraWd/2.,
fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
new TGeoTubeSeg( "sV0AFraR2b", fV0AR1-fV0AFraWd/2.,
TGeoCompositeShape *sV0AFraR3 = new TGeoCompositeShape("sV0AFraR3","sV0AFraR3b-sV0ACha");
TGeoCompositeShape *sV0AFraR4 = new TGeoCompositeShape("sV0AFraR4","sV0AFraR4b-sV0ACha");
TGeoCompositeShape *sV0AFraR5 = new TGeoCompositeShape("sV0AFraR5","sV0AFraR5b-sV0ACha");
- TGeoVolume *V0AFraR1 = new TGeoVolume("V0AFraR1",sV0AFraR1,medV0AFra);
- TGeoVolume *V0AFraR2 = new TGeoVolume("V0AFraR2",sV0AFraR2,medV0AFra);
- TGeoVolume *V0AFraR3 = new TGeoVolume("V0AFraR3",sV0AFraR3,medV0AFra);
- TGeoVolume *V0AFraR4 = new TGeoVolume("V0AFraR4",sV0AFraR4,medV0AFra);
- TGeoVolume *V0AFraR5 = new TGeoVolume("V0AFraR5",sV0AFraR5,medV0AFra);
- V0AFraR1->SetLineColor(kV0AColorFra); V0AFraR2->SetLineColor(kV0AColorFra);
- V0AFraR3->SetLineColor(kV0AColorFra); V0AFraR4->SetLineColor(kV0AColorFra);
- V0AFraR5->SetLineColor(kV0AColorFra);
- V0AFra->AddNode(V0AFraR1,1);
- V0AFra->AddNode(V0AFraR2,1);
- V0AFra->AddNode(V0AFraR3,1);
- V0AFra->AddNode(V0AFraR4,1);
- V0AFra->AddNode(V0AFraR5,1);
- V0ASec->AddNode(V0AFra,1);
+ TGeoVolume *v0AFraR1 = new TGeoVolume("V0AFraR1",sV0AFraR1,medV0AFra);
+ TGeoVolume *v0AFraR2 = new TGeoVolume("V0AFraR2",sV0AFraR2,medV0AFra);
+ TGeoVolume *v0AFraR3 = new TGeoVolume("V0AFraR3",sV0AFraR3,medV0AFra);
+ TGeoVolume *v0AFraR4 = new TGeoVolume("V0AFraR4",sV0AFraR4,medV0AFra);
+ TGeoVolume *v0AFraR5 = new TGeoVolume("V0AFraR5",sV0AFraR5,medV0AFra);
+ v0AFraR1->SetLineColor(kV0AColorFra); v0AFraR2->SetLineColor(kV0AColorFra);
+ v0AFraR3->SetLineColor(kV0AColorFra); v0AFraR4->SetLineColor(kV0AColorFra);
+ v0AFraR5->SetLineColor(kV0AColorFra);
+ v0AFra->AddNode(v0AFraR1,1);
+ v0AFra->AddNode(v0AFraR2,1);
+ v0AFra->AddNode(v0AFraR3,1);
+ v0AFra->AddNode(v0AFraR4,1);
+ v0AFra->AddNode(v0AFraR5,1);
+ v0ASec->AddNode(v0AFra,1);
/// Sensitive scintilator
- TGeoVolume *V0ASci = new TGeoVolumeAssembly("V0ASci");
+ TGeoVolume *v0ASci = new TGeoVolumeAssembly("V0ASci");
new TGeoTubeSeg( "sV0AR1b", fV0AR0+fV0AFraWd/2.,
fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
new TGeoTubeSeg( "sV0AR2b", fV0AR1+fV0AFraWd/2.,
TGeoCompositeShape *sV0AR2 = new TGeoCompositeShape("sV0AR2","sV0AR2b-sV0ACha");
TGeoCompositeShape *sV0AR3 = new TGeoCompositeShape("sV0AR3","sV0AR3b-sV0ACha");
TGeoCompositeShape *sV0AR4 = new TGeoCompositeShape("sV0AR4","sV0AR4b-sV0ACha");
- TGeoVolume *V0L1 = new TGeoVolume("V0L1",sV0AR1,medV0ASci);
- TGeoVolume *V0L2 = new TGeoVolume("V0L2",sV0AR2,medV0ASci);
- TGeoVolume *V0L3 = new TGeoVolume("V0L3",sV0AR3,medV0ASci);
- TGeoVolume *V0L4 = new TGeoVolume("V0L4",sV0AR4,medV0ASci);
- V0L1->SetLineColor(kV0AColorSci); V0L2->SetLineColor(kV0AColorSci);
- V0L3->SetLineColor(kV0AColorSci); V0L4->SetLineColor(kV0AColorSci);
- V0ASci->AddNode(V0L1,1);
- V0ASci->AddNode(V0L2,1);
- V0ASci->AddNode(V0L3,1);
- V0ASci->AddNode(V0L4,1);
+ TGeoVolume *v0L1 = new TGeoVolume("V0L1",sV0AR1,medV0ASci);
+ TGeoVolume *v0L2 = new TGeoVolume("V0L2",sV0AR2,medV0ASci);
+ TGeoVolume *v0L3 = new TGeoVolume("V0L3",sV0AR3,medV0ASci);
+ TGeoVolume *v0L4 = new TGeoVolume("V0L4",sV0AR4,medV0ASci);
+ v0L1->SetLineColor(kV0AColorSci); v0L2->SetLineColor(kV0AColorSci);
+ v0L3->SetLineColor(kV0AColorSci); v0L4->SetLineColor(kV0AColorSci);
+ v0ASci->AddNode(v0L1,1);
+ v0ASci->AddNode(v0L2,1);
+ v0ASci->AddNode(v0L3,1);
+ v0ASci->AddNode(v0L4,1);
/// Non-sensitive scintilator
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR4;
- V0APts[1+8*i] = fV0AFraWd/2.;
- V0APts[2+8*i] = fV0AR4*sin45;
- V0APts[3+8*i] = (fV0AR4-fV0AFraWd)*sin45;
- V0APts[4+8*i] = fV0AR5/cos225*sin45+fV0AFraWd/2.*sin225;
- V0APts[5+8*i] = fV0AR5/cos225*sin45-fV0AFraWd/2.*cos225;
- V0APts[6+8*i] = fV0AR5/cos225-fV0AFraWd/2./ctg225;
- V0APts[7+8*i] = fV0AFraWd/2.;
+ v0APts[0+8*i] = fV0AR4;
+ v0APts[1+8*i] = fV0AFraWd/2.;
+ v0APts[2+8*i] = fV0AR4*sin45;
+ v0APts[3+8*i] = (fV0AR4-fV0AFraWd)*sin45;
+ v0APts[4+8*i] = fV0AR5/cos225*sin45+fV0AFraWd/2.*sin225;
+ v0APts[5+8*i] = fV0AR5/cos225*sin45-fV0AFraWd/2.*cos225;
+ v0APts[6+8*i] = fV0AR5/cos225-fV0AFraWd/2./ctg225;
+ v0APts[7+8*i] = fV0AFraWd/2.;
}
- new TGeoArb8("sV0AR5S1", fV0ASciWd/2., V0APts);
- new TGeoTubeSeg("sV0AR5S2", fV0AR4-(V0APts[6]-V0APts[0]),
+ new TGeoArb8("sV0AR5S1", fV0ASciWd/2., v0APts);
+ new TGeoTubeSeg("sV0AR5S2", fV0AR4-(v0APts[6]-v0APts[0]),
fV0AR4+fV0AFraWd/2., fV0ASciWd/2.+2*preShape, 0, 45);
TGeoCompositeShape *sV0AR5 = new TGeoCompositeShape("V0AR5","(sV0AR5S1 - sV0AR5S2)");
- TGeoVolume *V0AR5 = new TGeoVolume("V0AR5",sV0AR5,medV0ASci);
- V0AR5->SetLineColor(kV0AColorSci);
- V0ASci->AddNode(V0AR5,1);
- V0ASec->AddNode(V0ASci,1);
+ TGeoVolume *v0AR5 = new TGeoVolume("V0AR5",sV0AR5,medV0ASci);
+ v0AR5->SetLineColor(kV0AColorSci);
+ v0ASci->AddNode(v0AR5,1);
+ v0ASec->AddNode(v0ASci,1);
/// Segment of innermost octagon
- TGeoVolume *V0ASup = new TGeoVolumeAssembly("V0ASup");
+ TGeoVolume *v0ASup = new TGeoVolumeAssembly("V0ASup");
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = (fV0AR5-fV0AOctH1)/cos225; V0APts[1+8*i] = 0.;
- V0APts[2+8*i] = (fV0AR5-fV0AOctH1)/cos225*sin45; V0APts[3+8*i] = (fV0AR5-fV0AOctH1)/cos225*sin45;
- V0APts[4+8*i] = fV0AR5/cos225*sin45; V0APts[5+8*i] = fV0AR5/cos225*sin45;
- V0APts[6+8*i] = fV0AR5/cos225; V0APts[7+8*i] = 0.;
+ v0APts[0+8*i] = (fV0AR5-fV0AOctH1)/cos225; v0APts[1+8*i] = 0.;
+ v0APts[2+8*i] = (fV0AR5-fV0AOctH1)/cos225*sin45; v0APts[3+8*i] = (fV0AR5-fV0AOctH1)/cos225*sin45;
+ v0APts[4+8*i] = fV0AR5/cos225*sin45; v0APts[5+8*i] = fV0AR5/cos225*sin45;
+ v0APts[6+8*i] = fV0AR5/cos225; v0APts[7+8*i] = 0.;
}
- TGeoArb8 *sV0AOct1 = new TGeoArb8("sV0AOct1", fV0AOctWd/2., V0APts);
- TGeoVolume *V0AOct1 = new TGeoVolume("V0AOct1",sV0AOct1,medV0ASup);
- V0AOct1->SetLineColor(kV0AColorOct);
- V0ASup->AddNode(V0AOct1,1,new TGeoTranslation(0,0,(fV0ASciWd+fV0AOctWd)/2.));
- V0ASup->AddNode(V0AOct1,2,new TGeoTranslation(0,0,-(fV0ASciWd+fV0AOctWd)/2.));
+ TGeoArb8 *sV0AOct1 = new TGeoArb8("sV0AOct1", fV0AOctWd/2., v0APts);
+ TGeoVolume *v0AOct1 = new TGeoVolume("V0AOct1",sV0AOct1,medV0ASup);
+ v0AOct1->SetLineColor(kV0AColorOct);
+ v0ASup->AddNode(v0AOct1,1,new TGeoTranslation(0,0,(fV0ASciWd+fV0AOctWd)/2.));
+ v0ASup->AddNode(v0AOct1,2,new TGeoTranslation(0,0,-(fV0ASciWd+fV0AOctWd)/2.));
/// Segment of outtermost octagon
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = (fV0AR6-fV0AOctH2)/cos225; V0APts[1+8*i] = 0.;
- V0APts[2+8*i] = (fV0AR6-fV0AOctH2)/cos225*sin45; V0APts[3+8*i] = (fV0AR6-fV0AOctH2)/cos225*sin45;
- V0APts[4+8*i] = fV0AR6/cos225*sin45; V0APts[5+8*i] = fV0AR6/cos225*sin45;
- V0APts[6+8*i] = fV0AR6/cos225; V0APts[7+8*i] = 0.;
+ v0APts[0+8*i] = (fV0AR6-fV0AOctH2)/cos225; v0APts[1+8*i] = 0.;
+ v0APts[2+8*i] = (fV0AR6-fV0AOctH2)/cos225*sin45; v0APts[3+8*i] = (fV0AR6-fV0AOctH2)/cos225*sin45;
+ v0APts[4+8*i] = fV0AR6/cos225*sin45; v0APts[5+8*i] = fV0AR6/cos225*sin45;
+ v0APts[6+8*i] = fV0AR6/cos225; v0APts[7+8*i] = 0.;
}
- TGeoArb8 *sV0AOct2 = new TGeoArb8("sV0AOct2", (fV0ASciWd+2*fV0AOctWd)/2., V0APts);
- TGeoVolume *V0AOct2 = new TGeoVolume("V0AOct2", sV0AOct2,medV0ASup);
- V0AOct2->SetLineColor(kV0AColorOct);
- V0ASup->AddNode(V0AOct2,1);
- V0ASec->AddNode(V0ASup,1);
+ TGeoArb8 *sV0AOct2 = new TGeoArb8("sV0AOct2", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
+ TGeoVolume *v0AOct2 = new TGeoVolume("V0AOct2", sV0AOct2,medV0ASup);
+ v0AOct2->SetLineColor(kV0AColorOct);
+ v0ASup->AddNode(v0AOct2,1);
+ v0ASec->AddNode(v0ASup,1);
/// Bunch of fibers
- V0APts[ 0] = V0APts[ 2] = -12.5;
- V0APts[ 1] = V0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
- V0APts[ 3] = V0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
- V0APts[ 4] = V0APts[ 6] = +12.5;
- V0APts[ 8] = V0APts[10] = -0.5;
- V0APts[ 9] = V0APts[15] = 0.;
- V0APts[11] = V0APts[13] = 0.25;
- V0APts[12] = V0APts[14] = +0.5;
- TGeoArb8 *sV0AFib = new TGeoArb8("sV0AFib", (fV0AR6-fV0AR5-fV0AOctH2-0.006)/2., V0APts);
- TGeoVolume *V0AFib1 = new TGeoVolume("V0AFib1",sV0AFib,medV0AFib);
- TGeoVolume *V0AFib = new TGeoVolumeAssembly("V0AFib");
+ v0APts[ 0] = v0APts[ 2] = -12.5;
+ v0APts[ 1] = v0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
+ v0APts[ 3] = v0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
+ v0APts[ 4] = v0APts[ 6] = +12.5;
+ v0APts[ 8] = v0APts[10] = -0.5;
+ v0APts[ 9] = v0APts[15] = 0.;
+ v0APts[11] = v0APts[13] = 0.25;
+ v0APts[12] = v0APts[14] = +0.5;
+ TGeoArb8 *sV0AFib = new TGeoArb8("sV0AFib", (fV0AR6-fV0AR5-fV0AOctH2-0.006)/2., v0APts);
+ TGeoVolume *v0AFib1 = new TGeoVolume("V0AFib1",sV0AFib,medV0AFib);
+ TGeoVolume *v0AFib = new TGeoVolumeAssembly("V0AFib");
TGeoRotation *rot = new TGeoRotation("rot");
rot->RotateX(-90);
rot->RotateZ(-90.+22.5);
- V0AFib->AddNode(V0AFib1,1,rot);
+ v0AFib->AddNode(v0AFib1,1,rot);
rot = new TGeoRotation("rot");
rot->RotateX(-90);
rot->RotateY(180);
rot->RotateZ(-90.+22.5);
- V0AFib->SetLineColor(kV0AColorFib);
- V0AFib->AddNode(V0AFib1,2,rot);
- V0ASec->AddNode(V0AFib,1,new TGeoTranslation((fV0AR6-fV0AOctH2+fV0AR5)*cos225/2.,
+ v0AFib->SetLineColor(kV0AColorFib);
+ v0AFib->AddNode(v0AFib1,2,rot);
+ v0ASec->AddNode(v0AFib,1,new TGeoTranslation((fV0AR6-fV0AOctH2+fV0AR5)*cos225/2.,
(fV0AR6-fV0AOctH2+fV0AR5)*sin225/2., 0));
/// Plates
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR0; V0APts[1+8*i] = 0.;
- V0APts[2+8*i] = fV0AR0*sin45; V0APts[3+8*i] = fV0AR0*sin45;
- V0APts[4+8*i] = fV0AR6/cos225 * sin45; V0APts[5+8*i] = fV0AR6/cos225*sin45;
- V0APts[6+8*i] = fV0AR6/cos225; V0APts[7+8*i] = 0.;
+ v0APts[0+8*i] = fV0AR0; v0APts[1+8*i] = 0.;
+ v0APts[2+8*i] = fV0AR0*sin45; v0APts[3+8*i] = fV0AR0*sin45;
+ v0APts[4+8*i] = fV0AR6/cos225 * sin45; v0APts[5+8*i] = fV0AR6/cos225*sin45;
+ v0APts[6+8*i] = fV0AR6/cos225; v0APts[7+8*i] = 0.;
}
- TGeoArb8 *sV0APlaIn = new TGeoArb8("sV0APlaIn", (fV0APlaWd-2*fV0APlaAl)/2., V0APts);
- TGeoVolume *V0APlaIn = new TGeoVolume("V0APlaIn", sV0APlaIn, medV0APlaIn);
- TGeoArb8 *sV0APlaOu = new TGeoArb8("sV0APlaOu", fV0APlaAl/2., V0APts);
- TGeoVolume *V0APlaOu = new TGeoVolume("V0APlaOu", sV0APlaOu, medV0APlaOu);
- V0APlaIn->SetLineColor(kV0AColorPlaIn); V0APlaOu->SetLineColor(kV0AColorPlaOu);
- TGeoVolume *V0APla = new TGeoVolumeAssembly("V0APla");
- V0APla->AddNode(V0APlaIn,1);
- V0APla->AddNode(V0APlaOu,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
- V0APla->AddNode(V0APlaOu,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
- V0ASec->AddNode(V0APla,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
- V0ASec->AddNode(V0APla,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
+ TGeoArb8 *sV0APlaIn = new TGeoArb8("sV0APlaIn", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
+ TGeoVolume *v0APlaIn = new TGeoVolume("V0APlaIn", sV0APlaIn, medV0APlaIn);
+ TGeoArb8 *sV0APlaOu = new TGeoArb8("sV0APlaOu", fV0APlaAl/2., v0APts);
+ TGeoVolume *v0APlaOu = new TGeoVolume("V0APlaOu", sV0APlaOu, medV0APlaOu);
+ v0APlaIn->SetLineColor(kV0AColorPlaIn); v0APlaOu->SetLineColor(kV0AColorPlaOu);
+ TGeoVolume *v0APla = new TGeoVolumeAssembly("V0APla");
+ v0APla->AddNode(v0APlaIn,1);
+ v0APla->AddNode(v0APlaOu,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
+ v0APla->AddNode(v0APlaOu,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
+ v0ASec->AddNode(v0APla,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
+ v0ASec->AddNode(v0APla,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
/// PMBox
- TGeoVolume* V0APM = new TGeoVolumeAssembly("V0APM");
+ TGeoVolume* v0APM = new TGeoVolumeAssembly("V0APM");
new TGeoBBox("sV0APMB1", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
new TGeoBBox("sV0APMB2", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
TGeoCompositeShape *sV0APMB = new TGeoCompositeShape("sV0APMB","sV0APMB1-sV0APMB2");
- TGeoVolume *V0APMB = new TGeoVolume("V0APMB",sV0APMB, medV0APMAlum);
- V0APMB->SetLineColor(kV0AColorPMA);
- V0APM->AddNode(V0APMB,1);
+ TGeoVolume *v0APMB = new TGeoVolume("V0APMB",sV0APMB, medV0APMAlum);
+ v0APMB->SetLineColor(kV0AColorPMA);
+ v0APM->AddNode(v0APMB,1);
/// PMTubes
TGeoTube *sV0APMT1 = new TGeoTube("sV0APMT1", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
- TGeoVolume *V0APMT1 = new TGeoVolume("V0APMT1", sV0APMT1, medV0APMGlass);
+ TGeoVolume *v0APMT1 = new TGeoVolume("V0APMT1", sV0APMT1, medV0APMGlass);
TGeoTube *sV0APMT2 = new TGeoTube("sV0APMT2", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
- TGeoVolume *V0APMT2 = new TGeoVolume("V0APMT2", sV0APMT2, medV0APMAlum);
- TGeoVolume *V0APMT = new TGeoVolumeAssembly("V0APMT");
+ TGeoVolume *v0APMT2 = new TGeoVolume("V0APMT2", sV0APMT2, medV0APMAlum);
+ TGeoVolume *v0APMT = new TGeoVolumeAssembly("V0APMT");
TGeoTube *sV0APMTT = new TGeoTube("sV0APMTT", 0., fV0APMTR4, fV0APMTB/2.);
- TGeoVolume *V0APMTT = new TGeoVolume("V0APMT1", sV0APMTT, medV0APMAlum);
- V0APMT1->SetLineColor(kV0AColorPMG);
- V0APMT2->SetLineColor(kV0AColorPMA);
- V0APMTT->SetLineColor(kV0AColorPMA);
+ TGeoVolume *v0APMTT = new TGeoVolume("V0APMT1", sV0APMTT, medV0APMAlum);
+ v0APMT1->SetLineColor(kV0AColorPMG);
+ v0APMT2->SetLineColor(kV0AColorPMA);
+ v0APMTT->SetLineColor(kV0AColorPMA);
rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
- V0APMT->AddNode(V0APMT1,1,rot);
- V0APMT->AddNode(V0APMT2,1,rot);
- V0APMT->AddNode(V0APMTT,1,new TGeoCombiTrans(0,-(fV0APMTH+fV0APMTB)/2.,0,rot));
+ v0APMT->AddNode(v0APMT1,1,rot);
+ v0APMT->AddNode(v0APMT2,1,rot);
+ v0APMT->AddNode(v0APMTT,1,new TGeoCombiTrans(0,-(fV0APMTH+fV0APMTB)/2.,0,rot));
double autoShift = (fV0APMBWd-2*fV0APMBWdW)/4.;
- V0APM->AddNode(V0APMT, 1, new TGeoTranslation(-1.5*autoShift, 0, 0));
- V0APM->AddNode(V0APMT, 2, new TGeoTranslation(-0.5*autoShift, 0, 0));
- V0APM->AddNode(V0APMT, 3, new TGeoTranslation(+0.5*autoShift, 0, 0));
- V0APM->AddNode(V0APMT, 4, new TGeoTranslation(+1.5*autoShift, 0, 0));
+ v0APM->AddNode(v0APMT, 1, new TGeoTranslation(-1.5*autoShift, 0, 0));
+ v0APM->AddNode(v0APMT, 2, new TGeoTranslation(-0.5*autoShift, 0, 0));
+ v0APM->AddNode(v0APMT, 3, new TGeoTranslation(+0.5*autoShift, 0, 0));
+ v0APM->AddNode(v0APMT, 4, new TGeoTranslation(+1.5*autoShift, 0, 0));
/// PM
rot = new TGeoRotation("rot");
double shiftZ = fV0APMBHt/2. * cosAngPMB
- ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMB;
double shiftR = fV0AR6 + fV0APMBHt/2. * sinAngPMB + fV0APMBTh/2. * cosAngPMB;
- V0ASec->AddNode(V0APM,1, new TGeoCombiTrans( shiftR*cos225, shiftR*sin225, shiftZ, rot));
+ v0ASec->AddNode(v0APM,1, new TGeoCombiTrans( shiftR*cos225, shiftR*sin225, shiftZ, rot));
/// End of sector definition
////////////////////////////
TGeoVolume *v0LE = new TGeoVolumeAssembly("V0LE");
for(int i=0; i<8; i++) {
TGeoRotation *rot = new TGeoRotation("rot", 90., i*45., 90., 90.+i*45., 0., 0.);
- v0LE->AddNode(V0ASec,i,rot);
+ v0LE->AddNode(v0ASec,i,rot);
}
/// Basis Construction
TGeoCombiTrans *pos1 = new TGeoCombiTrans("pos1", shiftR*sin225, shiftR*cos225, shiftZ, rot);
pos1->RegisterYourself();
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR6/cos225*sin45; V0APts[1+8*i] = fV0AR6/cos225*sin45;
- V0APts[2+8*i] = 0; V0APts[3+8*i] = fV0AR6/cos225;
- V0APts[4+8*i] = 0; V0APts[5+8*i] = fV0AR6/cos225+fV0APlaEx;
- V0APts[6+8*i] = fV0AR6/cos225-(fV0AR6/cos225+fV0APlaEx)/ctg225;
- V0APts[7+8*i] = fV0AR6/cos225+fV0APlaEx;
+ v0APts[0+8*i] = fV0AR6/cos225*sin45; v0APts[1+8*i] = fV0AR6/cos225*sin45;
+ v0APts[2+8*i] = 0; v0APts[3+8*i] = fV0AR6/cos225;
+ v0APts[4+8*i] = 0; v0APts[5+8*i] = fV0AR6/cos225+fV0APlaEx;
+ v0APts[6+8*i] = fV0AR6/cos225-(fV0AR6/cos225+fV0APlaEx)/ctg225;
+ v0APts[7+8*i] = fV0AR6/cos225+fV0APlaEx;
}
- new TGeoArb8("sV0APlaExIn1", (fV0APlaWd-2*fV0APlaAl)/2., V0APts);
- new TGeoArb8("sV0APlaExOu1", fV0APlaAl/2., V0APts);
+ new TGeoArb8("sV0APlaExIn1", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
+ new TGeoArb8("sV0APlaExOu1", fV0APlaAl/2., v0APts);
TGeoCompositeShape *sV0APlaExIn = new TGeoCompositeShape("sV0APlaExIn","sV0APlaExIn1-sV0APMB1:pos1");
- TGeoVolume *V0APlaExIn = new TGeoVolume("V0APlaExIn", sV0APlaExIn, medV0APlaIn);
+ TGeoVolume *v0APlaExIn = new TGeoVolume("V0APlaExIn", sV0APlaExIn, medV0APlaIn);
TGeoCompositeShape *sV0APlaExOu = new TGeoCompositeShape("sV0APlaExOu","sV0APlaExOu1-sV0APMB1:pos1");
- TGeoVolume *V0APlaExOu = new TGeoVolume("V0APlaExOu", sV0APlaExOu, medV0APlaOu);
- V0APlaExIn->SetLineColor(kV0AColorPlaIn); V0APlaExOu->SetLineColor(kV0AColorPlaOu);
- TGeoVolume *V0APlaEx = new TGeoVolumeAssembly("V0APlaEx");
- V0APlaEx->AddNode(V0APlaExIn,1);
- V0APlaEx->AddNode(V0APlaExOu,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
- V0APlaEx->AddNode(V0APlaExOu,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
+ TGeoVolume *v0APlaExOu = new TGeoVolume("V0APlaExOu", sV0APlaExOu, medV0APlaOu);
+ v0APlaExIn->SetLineColor(kV0AColorPlaIn); v0APlaExOu->SetLineColor(kV0AColorPlaOu);
+ TGeoVolume *v0APlaEx = new TGeoVolumeAssembly("V0APlaEx");
+ v0APlaEx->AddNode(v0APlaExIn,1);
+ v0APlaEx->AddNode(v0APlaExOu,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
+ v0APlaEx->AddNode(v0APlaExOu,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
for (int i=0;i<2;i++) {
- V0APts[0+8*i] = fV0AR6/cos225-(fV0AR6/cos225+fV0APlaEx)/ctg225-fV0ABasHt*sin45;
- V0APts[1+8*i] = fV0AR6/cos225+fV0APlaEx-fV0ABasHt*sin45;
- V0APts[2+8*i] = 0; V0APts[3+8*i] = fV0AR6/cos225+fV0APlaEx-fV0ABasHt;
- V0APts[4+8*i] = 0; V0APts[5+8*i] = fV0AR6/cos225+fV0APlaEx;
- V0APts[6+8*i] = fV0AR6/cos225-(fV0AR6/cos225+fV0APlaEx)/ctg225;
- V0APts[7+8*i] = fV0AR6/cos225+fV0APlaEx;
+ v0APts[0+8*i] = fV0AR6/cos225-(fV0AR6/cos225+fV0APlaEx)/ctg225-fV0ABasHt*sin45;
+ v0APts[1+8*i] = fV0AR6/cos225+fV0APlaEx-fV0ABasHt*sin45;
+ v0APts[2+8*i] = 0; v0APts[3+8*i] = fV0AR6/cos225+fV0APlaEx-fV0ABasHt;
+ v0APts[4+8*i] = 0; v0APts[5+8*i] = fV0AR6/cos225+fV0APlaEx;
+ v0APts[6+8*i] = fV0AR6/cos225-(fV0AR6/cos225+fV0APlaEx)/ctg225;
+ v0APts[7+8*i] = fV0AR6/cos225+fV0APlaEx;
}
- new TGeoArb8("sV0ABas1", (fV0ASciWd+2*fV0AOctWd)/2., V0APts);
+ new TGeoArb8("sV0ABas1", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
TGeoCompositeShape *sV0ABas = new TGeoCompositeShape("sV0ABas","sV0ABas1-sV0APMB1:pos1");
- TGeoVolume *V0ABas = new TGeoVolume("V0ABas", sV0ABas, medV0ABas);
- V0ABas->SetLineColor(kV0AColorBas);
- TGeoVolume *V0ABasis = new TGeoVolumeAssembly("V0ABasis");
+ TGeoVolume *v0ABas = new TGeoVolume("V0ABas", sV0ABas, medV0ABas);
+ v0ABas->SetLineColor(kV0AColorBas);
+ TGeoVolume *v0ABasis = new TGeoVolumeAssembly("V0ABasis");
rot = new TGeoRotation("rot",90.,180.,90.,90.,0.,0.);
- V0ABasis->AddNode(V0APlaEx,1, new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
- V0ABasis->AddNode(V0APlaEx,2, new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
- V0ABasis->AddNode(V0APlaEx,3, new TGeoCombiTrans(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.,rot));
- V0ABasis->AddNode(V0APlaEx,4, new TGeoCombiTrans(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.,rot));
- V0ABasis->AddNode(V0ABas,1);
- V0ABasis->AddNode(V0ABas,2,rot);
+ v0ABasis->AddNode(v0APlaEx,1, new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
+ v0ABasis->AddNode(v0APlaEx,2, new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
+ v0ABasis->AddNode(v0APlaEx,3, new TGeoCombiTrans(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.,rot));
+ v0ABasis->AddNode(v0APlaEx,4, new TGeoCombiTrans(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.,rot));
+ v0ABasis->AddNode(v0ABas,1);
+ v0ABasis->AddNode(v0ABas,2,rot);
rot = new TGeoRotation("rot");
rot->RotateZ(180);
- v0LE->AddNode(V0ABasis,1,rot);
+ v0LE->AddNode(v0ABasis,1,rot);
// Adding detectors to top volume
- TGeoVolume *VZERO = new TGeoVolumeAssembly("VZERO");
- VZERO->AddNode(v0RI,1,new TGeoTranslation(0, 0, -zdet));
- VZERO->AddNode(v0LE,1,new TGeoTranslation(0, 0, +340));
- top->AddNode(VZERO,1);
+ TGeoVolume *vZERO = new TGeoVolumeAssembly("VZERO");
+ vZERO->AddNode(v0RI,1,new TGeoTranslation(0, 0, -zdet));
+ vZERO->AddNode(v0LE,1,new TGeoTranslation(0, 0, +340));
+ top->AddNode(vZERO,1);
}
//_____________________________________________________________________________
void AliVZEROv7::CreateMaterials()
// vol[1] = copy number (1 to 8)
Int_t index = vol[1];
- Int_t RingNumber = Int_t(hits[8]);
+ Int_t ringNumber = Int_t(hits[8]);
fCellId = 0;
Float_t phi = Float_t(TMath::ATan2(Double_t(hits[1]),Double_t(hits[0])) );
Float_t kRaddeg = 180.0/TMath::Pi();
if (index < 7) index = index + 8;
if (hits[2] < 0.0) {
- if(RingNumber < 3) {
- index = (index - 7) + ( ( RingNumber - 1 ) * 8);
- } else if (RingNumber >= 3) {
+ if(ringNumber < 3) {
+ index = (index - 7) + ( ( ringNumber - 1 ) * 8);
+ } else if (ringNumber >= 3) {
if ( gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R3") || gMC->CurrentVolID(vol[1])
- == gMC->VolId("V0R5") ) index = (index*2-14)+((RingNumber-2)*16);
+ == gMC->VolId("V0R5") ) index = (index*2-14)+((ringNumber-2)*16);
if ( gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R4") || gMC->CurrentVolID(vol[1])
- == gMC->VolId("V0R6") ) index = (index*2-13)+((RingNumber-2)*16);
+ == gMC->VolId("V0R6") ) index = (index*2-13)+((ringNumber-2)*16);
}
fCellId = index;
} else if (hits[2] > 0.0) {
- index = (index - 7 + 48) + ( ( RingNumber - 1 ) * 8);
+ index = (index - 7 + 48) + ( ( ringNumber - 1 ) * 8);
fCellId = index;
}
return fCellId;