// //
//////////////////////////////////////////////////////////////////////
-// --- 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 "TGeoMatrix.h"
-
-// --- AliRoot header files ---
-#include "AliRun.h"
-#include "AliMC.h"
-#include "AliConst.h"
-#include "AliMagF.h"
-#include "AliVZEROLoader.h"
-#include "AliVZEROdigit.h"
-#include "AliVZEROhit.h"
#include "AliVZEROv6.h"
-#include "AliLog.h"
ClassImp(AliVZEROv6)
AliDebug(2,"VZERO ConstructGeometry");
- TGeoManager *geoManager = gGeoManager;
- TGeoMedium *medAir = gGeoManager->GetMedium("VZERO_Air");
+// TGeoMedium *medAir = gGeoManager->GetMedium("VZERO_Air");
TGeoMedium *medAlu = gGeoManager->GetMedium("VZERO_Aluminum");
TGeoMedium *medCar = gGeoManager->GetMedium("VZERO_Carbon");
TGeoMedium *medSci = gGeoManager->GetMedium("VZERO_Scintillator");
TGeoVolume *top = gGeoManager->GetVolume("ALIC");
- top->SetLineColor(kMagenta);
-
Float_t heightRight, r4Right;
Float_t zdet = 90.0 - 0.5 - fV0CBoxThickness/2.0;
heightRight = fV0CHeight1 + fV0CHeight2 + fV0CHeight3 + fV0CHeight4;
r4Right = fV0CRMin + heightRight + 3.0*0.2; // 3 spacings of 2mm between rings
-
- Float_t partube[3];
- partube[0] = fV0CRMin - 0.3;
- partube[1] = fV0CRBox + 0.3;
- partube[2] = fV0CBoxThickness/2.0;
+// Creation of assembly V0RI - right part - :
-// Creation of mother volume V0RI - right part - :
-
- TGeoTube *sV0RI = new TGeoTube("V0RI",partube[0], partube[1], partube[2]);
- TGeoVolume *v0RI = new TGeoVolume("V0RI",sV0RI,medAir);
+ TGeoVolume *v0RI = new TGeoVolumeAssembly("V0RI");
TGeoTranslation *tr1 = new TGeoTranslation(0.,0.,-zdet);
top->AddNode(v0RI,1,tr1);
- v0RI->SetVisibility(kFALSE);
// Creation of carbon lids (3.0 mm thick) to keep V0C box shut :
+
+ Float_t partube[3];
partube[0] = fV0CRMin;
partube[1] = fV0CRBox;
v0RI->AddNode(v0ER,1,0);
v0ER->SetLineColor(kYellow);
-// Mother volume v0R0 in which will be set the scintillator cells
-
- Float_t partubs[5];
+// Creation of assembly V0R0 of scintillator cells within one sector
- partubs[0] = fV0CRMin;
- partubs[1] = r4Right;
- partubs[2] = fV0CBoxThickness/2.0;
- partubs[3] = 90.0-22.5;
- partubs[4] = 135.0-22.5;
-
- TGeoTubeSeg *sV0R0 = new TGeoTubeSeg("V0R0", partubs[0], partubs[1], partubs[2],
- partubs[3], partubs[4]);
- TGeoVolume *v0R0 = new TGeoVolume("V0R0",sV0R0,medAir);
-
+ TGeoVolume *v0R0 = new TGeoVolumeAssembly("V0R0");
// Elementary cell of ring 1 - right part - :
// (cells of ring 1 will be shifted by 2.0 cm backwards to output fibers)
Float_t r1Right = fV0CRMin + fV0CHeight1;
- Float_t offset = fV0CBoxThickness/2.0 - fV0CLidThickness - fV0CCellThickness/2.0;
-
+ Float_t offset = fV0CBoxThickness/2.0 - fV0CLidThickness - fV0CCellThickness/2.0;
+
+ Float_t partubs[5];
+
partubs[0] = fV0CRMin;
partubs[1] = r1Right;
partubs[2] = fV0CCellThickness/2.0;
-
+ partubs[3] = 90.0-22.5;
+ partubs[4] = 135.0-22.5;
+
TGeoTubeSeg *sV0R1 = new TGeoTubeSeg("V0R1", partubs[0], partubs[1], partubs[2],
partubs[3], partubs[4]);
TGeoVolume *v0R1 = new TGeoVolume("V0R1",sV0R1,medSci);
r2Right = r2Right + 0.2;
Float_t r3Right = r2Right + fV0CHeight3;
-// printf(" r2 = %f, r3 = %f \n\n", r2Right,r3Right );
+// printf(" r2 = %f, r3 = %f \n\n", r2Right,r3Right);
partubs[0] = r2Right; // must be equal to 11.7
partubs[1] = r3Right; // must be equal to 19.1
ncellsR = (nsecR - 1) * 6; // 6 cells per sector (2 cells in ring 3 and 4)
AliInfo(Form("Number of cells on Right side - V0C = %d", ncellsR));
-// Creation of mother volume v0LE - left part - :
+// Creation of assembly v0LE - left part - :
// Entrance face at +339.0 cm (new coordinate system) ...
Float_t heightLeft = fV0AHeight1 + fV0AHeight2 + fV0AHeight3 + fV0AHeight4;
Float_t r4Left = fV0ARMin + heightLeft;
-
- partube[0] = fV0ARMin;
- partube[1] = r4Left;
- partube[2] = fV0ACellThickness/2.0;
-
- TGeoTube *sV0LE = new TGeoTube("V0LE",partube[0], partube[1], partube[2]);
- TGeoVolume *v0LE = new TGeoVolume("V0LE",sV0LE,medAir);
+
+ TGeoVolume *v0LE = new TGeoVolumeAssembly("V0LE");
+
TGeoTranslation *tr8 = new TGeoTranslation(0.,0.,339.0 + fV0ACellThickness/2.0);
top->AddNode(v0LE,1,tr8);
-
- partubs[0] = fV0ARMin;
- partubs[1] = r4Left;
- partubs[2] = fV0ACellThickness/2.0;
- partubs[3] = 90.0-22.5;
- partubs[4] = 135.0-22.5;
-
- TGeoTubeSeg *sV0L0 = new TGeoTubeSeg("V0L0", partubs[0], partubs[1], partubs[2],
- partubs[3], partubs[4]);
- TGeoVolume *v0L0 = new TGeoVolume("V0L0",sV0L0,medAir);
- v0L0->SetVisibility(kFALSE);
+
+// Creation of assembly V0L0 of scintillator cells within one sector
+
+ TGeoVolume *v0L0 = new TGeoVolumeAssembly("V0L0");
Float_t offsetLeft;
offsetLeft = - fV0ACellThickness/2.0;
partubs[0] = fV0ARMin;
partubs[1] = r1Left;
-
+ partubs[2] = fV0ACellThickness/2.0;
+ partubs[3] = 90.0-22.5;
+ partubs[4] = 135.0-22.5;
+
TGeoTubeSeg *sV0L1 = new TGeoTubeSeg("V0L1", partubs[0], partubs[1], partubs[2],
partubs[3], partubs[4]);
TGeoVolume *v0L1 = new TGeoVolume("V0L1",sV0L1,medSci);
ncellsL = (nsecL - 1) * 4; // 4 cells per sector
AliInfo(Form("Number of cells on Left side - V0A = %d\n", ncellsL));
-
+
+ gGeoManager->SetTopVolume(top);
gGeoManager->CloseGeometry();
// gGeoManager-> SetVisLevel(4);
- geoManager->Export("VZEROGeometry.root");
}
//_____________________________________________________________________________
// Int_t *idtmed = fIdtmed->GetArray()-2999;
Int_t fieldType = gAlice->Field()->Integ(); // Field type
- Double_t maxField = gAlice->Field()->Max(); // Field max.
+ Double_t maxField = gAlice->Field()->Max(); // Field max.
Double_t maxBending = 0; // Max Angle
Double_t maxStepSize = 0.001; // Max step size
Double_t maxEnergyLoss = 1; // Max Delta E
Float_t tmaxfd, stemax, deemax, epsil, stmin;
a = 0.0; z = 0.0;
- density = 0.0;
- radLength = 0.0;
- absLength = 999.0;
- tmaxfd = 10.;
- stemax = 0.1;
- deemax = 0.1;
- epsil = 0.001;
- stmin = 0.001;
+ density = 0.0;
+ radLength = 0.0;
+ absLength = 999.0;
+ tmaxfd = 10.;
+ stemax = 0.1;
+ deemax = 0.1;
+ epsil = 0.001;
+ stmin = 0.001;
// Parameters for Air (= 0.01% C + 75% N + 23% O + 1% Ar )
hits[18] = tlength;
hits[19] = nPhotons;
hits[20] = GetCellId (vol, hits);
-
+
AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol, hits);
tlength = 0.0;
// 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;
// cout << "volID = " << vol[0] << " copy = " << vol[1] << endl;
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); }
+ {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); }
+ {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;}
-// cout << " ring = " << RingNumber << " phi = "<< phi << endl;
+// cout << " ring = " << ringNumber << " phi = "<< phi << endl;
// cout << " cellID = " << fCellId << endl;
// cout << "**********" << endl;