From 61874e870dde06be7a41209bd428d8f553489ba1 Mon Sep 17 00:00:00 2001 From: cheynis Date: Thu, 6 Jun 2002 15:22:09 +0000 Subject: [PATCH] Updated VZERO source --- VZERO/AliVZERO.cxx | 36 +- VZERO/AliVZERO.h | 15 +- VZERO/AliVZEROdigit.cxx | 3 +- VZERO/AliVZEROdigit.h | 3 +- VZERO/AliVZEROhit.cxx | 36 +- VZERO/AliVZEROhit.h | 61 +-- VZERO/AliVZEROv0.cxx | 1100 +++++++++++++++++++++------------------ VZERO/AliVZEROv0.h | 22 +- VZERO/DrawVZERO.C | 13 +- VZERO/Makefile | 2 +- VZERO/VZEROLinkDef.h | 9 +- VZERO/ViewVZERO.C | 49 +- VZERO/libVZERO.pkg | 11 +- 13 files changed, 709 insertions(+), 651 deletions(-) diff --git a/VZERO/AliVZERO.cxx b/VZERO/AliVZERO.cxx index 9eb5a58dd2f..b9a64fde9be 100755 --- a/VZERO/AliVZERO.cxx +++ b/VZERO/AliVZERO.cxx @@ -20,7 +20,8 @@ // V-Zero Detector // // This class contains the base procedures for the VZERO detector // // All comments should be sent to Brigitte CHEYNIS : // -// b.cheynis@ipnl.in2p3.fr // // // +// b.cheynis@ipnl.in2p3.fr // +// // // // /////////////////////////////////////////////////////////////////////////// @@ -48,17 +49,17 @@ AliVZERO::AliVZERO(const char *name, const char *title) // Standard constructor for VZERO Detector // - fIshunt = 1 ; // All hits are associated with primary particles + fIshunt = 1; // All hits are associated with primary particles - fHits = new TClonesArray("AliVZEROhit",400) ; - fDigits = new TClonesArray("AliVZEROdigit",400) ; - - fNhits = 0; - fNdigits = 0; - fNCerenkovs = 0; - fMulti = 0; + fHits = new TClonesArray("AliVZEROhit", 400); + fDigits = new TClonesArray("AliVZEROdigit",400); + + gAlice->AddHitList(fHits); + +// fDigits = new TClonesArray("AliVZEROdigit",400) ; + fThickness = 3.1; // total thickness of the V0R box - fThickness1 = 2.5; // thickness of the thickest quartz cell + fThickness1 = 1.0; // thickness of the thickest cell (2.5 in version 0) fMaxStepQua = 0.05; fMaxStepAlu = 0.01; @@ -67,7 +68,16 @@ AliVZERO::AliVZERO(const char *name, const char *title) fMaxDestepAlu = -1.0; SetMarkerColor(kRed); - } +} + +//_____________________________________________________________________________ +AliVZERO::~AliVZERO() +{ + if (fHits) { + fHits->Delete(); + delete fHits; + } +} //_____________________________________________________________________________ void AliVZERO::BuildGeometry() @@ -91,6 +101,9 @@ void AliVZERO::CreateMaterials() // Build simple ROOT TNode geometry for event display // } + + + //_____________________________________________________________________________ Int_t AliVZERO::DistanceToPrimitive(Int_t px, Int_t py) { @@ -110,6 +123,7 @@ void AliVZERO::Init() // } + //------------------------------------------------------------------------- void AliVZERO::SetMaxStepQua(Float_t p1) diff --git a/VZERO/AliVZERO.h b/VZERO/AliVZERO.h index 34961e16156..0a8424a53c3 100755 --- a/VZERO/AliVZERO.h +++ b/VZERO/AliVZERO.h @@ -13,9 +13,7 @@ #include "TNamed.h" #include "TTree.h" -class TDirectory; -R__EXTERN TDirectory * gDirectory; - +class AliVZEROhit; class AliVZERO : public AliDetector { @@ -23,14 +21,17 @@ public: AliVZERO() {} AliVZERO(const char *name, const char *title); - virtual ~AliVZERO() {} - virtual void AddDigit( Int_t* tracks, Int_t* digits) = 0; + virtual ~AliVZERO(); +// virtual void AddHit(Int_t track , Int_t *vol, Float_t *hits)=0; +// virtual void AddDigits(Int_t* tracks, Int_t* digits)=0; virtual void BuildGeometry(); virtual void CreateGeometry(); virtual void CreateMaterials(); virtual Int_t DistanceToPrimitive(Int_t px, Int_t py); virtual Int_t IsVersion() const = 0; virtual void Init(); + virtual void MakeBranch(Option_t *option) =0; +// virtual void MakeBranch(Option_t *option); virtual void DrawModule() {}; virtual void StepManager() {}; virtual inline void SetThickness(Float_t thick) {fThickness = thick;}; @@ -41,10 +42,6 @@ public: virtual void SetMaxDestepQua(Float_t p1); virtual void SetMaxDestepAlu(Float_t p1); - Int_t fNCerenkovs; // Number of cerenkovs (detected on photocathode) - Int_t fNGCerenkovs; // Number of cerenkovs (generated) - Int_t fMulti; // Multiplicity of charged particles - Float_t fThickness; Float_t fThickness1; diff --git a/VZERO/AliVZEROdigit.cxx b/VZERO/AliVZEROdigit.cxx index 0094ce83200..550eea4c64b 100644 --- a/VZERO/AliVZEROdigit.cxx +++ b/VZERO/AliVZEROdigit.cxx @@ -30,8 +30,7 @@ AliVZEROdigit::AliVZEROdigit(Int_t* tracks, Int_t *digits): fTrack = tracks[0]; fEvent = digits[0]; - fMulti = digits[1]; - fNCerenkovs = digits[2]; + } diff --git a/VZERO/AliVZEROdigit.h b/VZERO/AliVZEROdigit.h index 985da025379..ccee7be4aca 100644 --- a/VZERO/AliVZEROdigit.h +++ b/VZERO/AliVZEROdigit.h @@ -13,9 +13,8 @@ class AliVZEROdigit: public AliDigit { public: Int_t fEvent; // Event number - Int_t fMulti; // Multiplicity of charged particles Int_t fTrack; - Int_t fNCerenkovs; + public: AliVZEROdigit() {} diff --git a/VZERO/AliVZEROhit.cxx b/VZERO/AliVZEROhit.cxx index 49bd9ddf046..cd71dc41cf9 100644 --- a/VZERO/AliVZEROhit.cxx +++ b/VZERO/AliVZEROhit.cxx @@ -26,25 +26,25 @@ AliVZEROhit::AliVZEROhit(Int_t shunt, Int_t track, Int_t* vol, Float_t* hits): // Add a VZERO hit // - fVolume = vol[2]; - fCopy = vol[3]; + fVolume = vol[0]; + fCopy = vol[1]; fX = hits[0]; fY = hits[1]; fZ = hits[2]; - fXloc = hits[3]; - fYloc = hits[4]; - fZloc = hits[5]; - fEdep = hits[6]; - fEtot = hits[7]; - fTrackPiD = hits[8]; - fParticle = hits[9]; - fTof = hits[10]; - fIsTrackEntering = hits[11]; - fIsTrackExiting = hits[12]; - fCharge = hits[13]; - fIsCerenkov = hits[14]; - fMulti = hits[15]; - fTheta = hits[16]; - fPhi = hits[17]; - fNGCerenkovs = hits[18]; + fTrackPiD = hits[3]; + fTof = hits[4]; + fCharge = hits[5]; + fTheta = hits[6]; + fPhi = hits[7]; + fRingNumber = hits[8]; + + fPt = hits[9]; + fPmom = hits[10]; + fPx = hits[11]; + fPy = hits[12]; + fPz = hits[13]; + + fEloss = hits[14]; + fTleng = hits[15]; + } diff --git a/VZERO/AliVZEROhit.h b/VZERO/AliVZEROhit.h index f05664325c2..180eeac316b 100644 --- a/VZERO/AliVZEROhit.h +++ b/VZERO/AliVZEROhit.h @@ -12,7 +12,6 @@ #include "AliHit.h" #include "TObjArray.h" #include "TArrayF.h" -#include "TMath.h" class AliVZEROhit : public AliHit { @@ -20,47 +19,41 @@ public: AliVZEROhit() {} AliVZEROhit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits); virtual ~AliVZEROhit() {} - inline Int_t GetVolume() {return fVolume;}; - inline Int_t GetCopy() {return fCopy;}; - inline Float_t GetX() {return fX;}; - inline Float_t GetY() {return fY;}; - inline Float_t GetZ() {return fZ;}; - inline Float_t GetXloc() {return fXloc;}; - inline Float_t GetYloc() {return fYloc;}; - inline Float_t GetZloc() {return fZloc;}; - inline Float_t GetEdep() {return fEdep;}; - inline Float_t GetEtot() {return fEtot;}; - inline Float_t GetTrackPiD() {return fTrackPiD;}; - inline Float_t GetParticle() {return fParticle;}; - inline Float_t GetTof() {return fTof;}; - inline Float_t IsTrackEntering() {return fIsTrackEntering;}; - inline Float_t IsTrackExiting() {return fIsTrackExiting;}; - inline Float_t GetCharge() {return fCharge;}; - inline Float_t IsCerenkov() {return fIsCerenkov;}; - inline Float_t GetMultiplicity() {return fMulti;}; - inline Float_t GetTheta() {return fTheta;}; - inline Float_t GetPhi() {return fPhi;}; - inline Float_t GetNGCerenkovs() {return fNGCerenkovs;}; + virtual Int_t Volume() {return fVolume;}; + virtual Int_t Copy() {return fCopy;}; + virtual Float_t TrackPiD() {return fTrackPiD;}; + virtual Float_t Tof() {return fTof;}; + virtual Float_t Charge() {return fCharge;}; + virtual Float_t RingNumber() {return fRingNumber;}; -public: + virtual Float_t Pt() {return fPt;}; + virtual Float_t Pmom() {return fPmom;}; + virtual Float_t Px() {return fPx;}; + virtual Float_t Py() {return fPy;}; + virtual Float_t Pz() {return fPz;}; + + Float_t Eloss() {return fEloss;} + Float_t Tleng() {return fTleng;} + +private: Int_t fVolume; // Current volume ID Int_t fCopy; // Copy number - Float_t fXloc; // x coordinate in STRT coord - Float_t fYloc; // y coordinate in STRT coord - Float_t fZloc; // z coordinate in STRT coord - Float_t fEdep; // Energy loss - Float_t fEtot; // Total energy of particle Float_t fTrackPiD; // Root particle ID - Float_t fParticle; // Geant particle ID Float_t fTof; // Time of flight wrt vertex - Float_t fIsTrackEntering; // Entrance flag - Float_t fIsTrackExiting; // Exit flag Float_t fCharge; // Charge of particle - Float_t fIsCerenkov; // Particle is a cerenkov photon - Float_t fMulti; // Multiplicity of entering charged particles Float_t fTheta; Float_t fPhi; - Float_t fNGCerenkovs; + Float_t fRingNumber; + + Float_t fPt; + Float_t fPmom; + Float_t fPx; + Float_t fPy; + Float_t fPz; + + Float_t fEloss; // energy loss in VZERO detector + Float_t fTleng; // track length in VZERO detector + ClassDef(AliVZEROhit,1) //Hits for detector VZERO }; diff --git a/VZERO/AliVZEROv0.cxx b/VZERO/AliVZEROv0.cxx index 303cd50738a..a81139e366c 100755 --- a/VZERO/AliVZEROv0.cxx +++ b/VZERO/AliVZEROv0.cxx @@ -14,12 +14,12 @@ **************************************************************************/ - ////////////////////////////////////////////////////////////////////// // // // (V-zero) detector version 0 as designed by the Lyon group // // All comments should be sent to Brigitte CHEYNIS : // // b.cheynis@ipnl.in2p3.fr // +// Geometrie du 25/02/2002 // // // ////////////////////////////////////////////////////////////////////// @@ -43,6 +43,7 @@ #include "AliVZEROv0.h" #include "AliRun.h" +#include "AliMagF.h" #include "AliMC.h" #include "AliVZEROhit.h" #include "AliVZEROdigit.h" @@ -56,17 +57,15 @@ #include "AliConst.h" #include "ABSOSHILConst.h" #include "ABSOConst.h" +#include "TLorentzVector.h" ClassImp(AliVZEROv0) //-------------------------------------------------------------------- AliVZEROv0:: AliVZEROv0():AliVZERO() { - fRootFile = 0; - fhMultiplicity = 0; - fhGEANTcode = 0; - fhCerenkov = 0; - fhToF = 0; + + } //-------------------------------------------------------------------- AliVZEROv0::AliVZEROv0(const char *name, const char *title): @@ -79,33 +78,37 @@ AliVZEROv0::AliVZEROv0(const char *name, const char *title): Int_t i; printf("\n"); - for(i=0;i<35;i++) printf("*"); - printf(" create VZERO object"); - for(i=0;i<35;i++) printf("*"); + for(i=0;i<30;i++) printf("*"); + printf(" Create VZERO object "); + for(i=0;i<30;i++) printf("*"); printf("\n"); } + //------------------------------------------------------------------------- void AliVZEROv0::CreateGeometry() { -// Creates the Geant geometry of the V-zeroR Detector (right part) version 0 +// Creates the Geant geometry of the V-zero Detector version 0 Int_t i; printf("\n"); - for(i=0;i<35;i++) printf("*"); - printf(" VZERO Create Geometry "); - for(i=0;i<35;i++) printf("*"); + for(i=0;i<30;i++) printf("*"); + printf(" Create VZERO Geometry "); + for(i=0;i<30;i++) printf("*"); printf("\n"); Int_t *idtmed = fIdtmed->GetArray()-2999; - Int_t n_detec = 1; - Int_t n_cells = 1; - + Int_t n_detec_R = 1; + Int_t n_detec_L = 1; + + Int_t n_cells_R = 1; + Int_t n_cells_L = 1; + Int_t idrotm[999]; Float_t height1, height2, height3, height4, height5; @@ -119,15 +122,16 @@ void AliVZEROv0::CreateGeometry() Float_t pi = TMath::Pi(); Float_t thick_alu; - height1 = 2.3; // height of cell 1, in cm - height2 = 3.7; // height of cell 2, in cm - height3 = 6.2; // height of cell 3, in cm - height4 = 10.5; // height of cell 4, in cm - height5 = 10.5; // height of cell 5, in cm + height1 = 2.0; // height of cell 1, in cm + height2 = 3.2; // height of cell 2, in cm + height3 = 4.9; // height of cell 3, in cm + height4 = 7.5; // height of cell 4, in cm + height5 = 12.0; // height of cell 5, in cm - theta = pi/12.0/2.0; // half angular opening = 7.5 degrees + theta = pi/6.0/2.0; // half angular opening = 15 degrees half_thick_alu = 0.0025; // half thickness of aluminum foil, in cm thick_alu = 2.0 * half_thick_alu; + fThickness1 = 2.5; half_thick_qua1 = fThickness1/2.0; // half thickness of WRAPPED quartz cell (inner ring) half_thick_qua2 = half_thick_qua1 - 0.25; half_thick_qua3 = half_thick_qua2 - 0.25; @@ -135,14 +139,175 @@ void AliVZEROv0::CreateGeometry() half_thick_qua5 = half_thick_qua4 - 0.25; zdet = 86.9 +fThickness/2.0; // distance to vertex (along Z axis) - r0 = 3.4; // closest distance to center of the beam pipe + r0 = 4.0; // closest distance to center of the beam pipe height = height1 + height2 + height3 + height4 + height5; r5 = r0 + height; +//............................................................................ + +// Here I add the flange which is sitting on beam line +// right in front of V0R detector, and which I found on CERN drawing +// entitled : ALICE BEAM VACCUM CHAMBER - RB26 version III : + +// Float_t pflange[3]; +// +// pflange[0] = 3.0; +// pflange[1] = 5.675; +// pflange[2] = 0.9; +// +// gMC->Gsvolu("QFA0","TUBE", idtmed[3003], pflange, 3); +// gMC->Gspos("QFA0", 1 ,"alic", 0.0, 0.0, 85.0+0.9, 0, "ONLY"); + +//............................................................................ + -// Creation of mother volume V0RI : +// Creation of mother volume V0LE - left part - : +// Face entree a -350.0 cm ... + + Float_t partube[3]; + + partube[0] = 4.3; + partube[1] = 45.0; + partube[2] = fThickness1/2.0; + + gMC->Gsvolu("V0LE","TUBE",idtmed[3002],partube,3); + + +// Creation of five rings - left part - : +// Face entree a -350.0 cm ... + +// Mother volume V0L0 in which will be set 5 quartz cells + + + Float_t par[11]; + + Float_t dist0_left; + Float_t r0_left = 4.3; + Float_t height1_left = 2.6; + Float_t height2_left = 4.1; + Float_t height3_left = 6.4; + Float_t height4_left = 10.2; + Float_t height5_left = 16.9; + Float_t height_left = height1_left + height2_left + height3_left + + height4_left + height5_left; + Float_t r5_left = r0_left + height_left; + + + dist0_left = r0_left + height_left / 2.0; + thick_alu = 2.0*half_thick_alu; + + par[0] = half_thick_qua1; + par[1] = 0.0; + par[2] = 0.0; + par[3] = height_left / 2.0 ; + par[4] = TMath::Tan(theta) * r0_left; + par[5] = TMath::Tan(theta) * r5_left; + par[6] = 0.0; + par[7] = height_left / 2.0 ; + par[8] = TMath::Tan(theta) * r0_left; + par[9] = TMath::Tan(theta) * r5_left; + par[10] = 0.0; + + + gMC->Gsvolu("V0L0","TRAP",idtmed[3010],par,11); // air volume + + Float_t dist1_left; + Float_t r1_left; + Float_t offset_left; + + dist1_left = (- height_left + height1_left) /2.0; + r1_left = r0_left + height1_left; + offset_left = - fThickness1/2.0 + 0.1; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height1_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r0_left - thick_alu; + par[5] = TMath::Tan(theta) * r1_left- thick_alu; + par[7] = height1_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r0_left - thick_alu; + par[9] = TMath::Tan(theta) * r1_left - thick_alu; + + + gMC->Gsvolu("V0L1","TRAP",idtmed[3002],par,11); // quartz volume + gMC->Gspos("V0L1",1,"V0L0", 0.0, dist1_left , 0.0, 0,"ONLY"); + + Float_t dist2_left; + Float_t r2_left; + + dist2_left = (- height_left + height2_left) /2.0 + height1_left; + r2_left = r1_left + height2_left; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height2_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r1_left - thick_alu; + par[5] = TMath::Tan(theta) * r2_left - thick_alu; + par[7] = height2_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r1_left - thick_alu; + par[9] = TMath::Tan(theta) * r2_left - thick_alu; + + gMC->Gsvolu("V0L2","TRAP",idtmed[3002],par,11); // quartz volume + gMC->Gspos("V0L2",1,"V0L0", 0.0, dist2_left , 0.0, 0,"ONLY"); + + + Float_t dist3_left; + Float_t r3_left; + + dist3_left = (- height_left + height3_left) /2.0 + height1_left + height2_left; + r3_left = r2_left + height3_left; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height3_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r2_left - thick_alu; + par[5] = TMath::Tan(theta) * r3_left - thick_alu; + par[7] = height3_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r2_left - thick_alu; + par[9] = TMath::Tan(theta) * r3_left - thick_alu; + + gMC->Gsvolu("V0L3","TRAP",idtmed[3002],par,11); // quartz volume + gMC->Gspos("V0L3",1,"V0L0", 0.0, dist3_left , 0.0, 0,"ONLY"); + + Float_t dist4_left; + Float_t r4_left; + + dist4_left = (- height_left + height4_left) /2.0 + height1_left + + height2_left + height3_left; + r4_left = r3_left + height4_left; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height4_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r3_left - thick_alu; + par[5] = TMath::Tan(theta) * r4_left - thick_alu; + par[7] = height4_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r3_left - thick_alu; + par[9] = TMath::Tan(theta) * r4_left - thick_alu; + + gMC->Gsvolu("V0L4","TRAP",idtmed[3002],par,11); // quartz volume + gMC->Gspos("V0L4",1,"V0L0", 0.0, dist4_left , 0.0, 0,"ONLY"); + + + Float_t dist5_left; + + + dist5_left = (- height_left + height5_left) /2.0 + height1_left + + height2_left + height3_left + height4_left; + + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height5_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r4_left - thick_alu; + par[5] = TMath::Tan(theta) * r5_left - thick_alu; + par[7] = height5_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r4_left - thick_alu; + par[9] = TMath::Tan(theta) * r5_left - thick_alu; + + gMC->Gsvolu("V0L5","TRAP",idtmed[3002],par,11); // quartz volume + gMC->Gspos("V0L5",1,"V0L0", 0.0, dist5_left , 0.0, 0,"ONLY"); + + +//............................................................................ + +// Creation of mother volume V0RI - right part - : - Float_t partube[3]; partube[0] = r0 - 0.2; partube[1] = (r5 + 1.0) / TMath::Cos(theta); @@ -157,7 +322,7 @@ void AliVZEROv0::CreateGeometry() parbox[0] = 0.; parbox[1] = 360.; - parbox[2] = 24; + parbox[2] = 12; parbox[3] = 2; parbox[4] = -0.1/2.0; parbox[5] = r0; @@ -196,8 +361,7 @@ void AliVZEROv0::CreateGeometry() // Mother volume V0R0 in which will be set 5 quartz cells // each one WRAPPED in reflecting aluminum : - Float_t dist0; - Float_t par[11]; + Float_t dist0; dist0 = r0 + height / 2.0; thick_alu = 2.0*half_thick_alu; @@ -250,7 +414,7 @@ void AliVZEROv0::CreateGeometry() parbox[2] = half_thick_qua1; gMC->Gsvolu("V0A2","BOX",idtmed[3004],parbox,3); // aluminum rectangular foil - Float_t theta_deg = 180./12./2.0; + Float_t theta_deg = 180./6./2.0; Float_t h1; h1 = TMath::Tan(theta) * (r0 + height1/2.0); AliMatrix(idrotm[911],90.0,+theta_deg,90.0,90.+theta_deg,0.0,0.); @@ -470,49 +634,73 @@ void AliVZEROv0::CreateGeometry() Float_t phi_rad ; - Float_t phi_deg = 180./12.; + Float_t phi_deg = 180./6.; - - for(Float_t phi = 7.5; phi < 360.0; phi = phi + phi_deg) + // Partie de droite : + + for(Float_t phi = 15.0; phi < 360.0; phi = phi + phi_deg) { phi_rad = phi*pi/180.; AliMatrix(idrotm[902], 90.0, phi, 90.0, 90.0 +phi, 0.0 , 0.0); - gMC->Gspos("V0R0",n_detec,"V0RI",-dist0*TMath::Sin(phi_rad), + gMC->Gspos("V0R0",n_detec_R,"V0RI",-dist0*TMath::Sin(phi_rad), dist0*TMath::Cos(phi_rad),offset + half_thick_qua1,idrotm[902],"ONLY"); - n_detec++; + n_detec_R++; } gMC->Gspos("V0RI",1,"alic",0.0,0.0,zdet,0,"ONLY"); - n_cells = (n_detec - 1) * 5; + n_cells_R = (n_detec_R - 1) * 5; printf(" \n\n\n"); - printf(" Number of cells = %d\n\n", n_cells); + printf(" Number of cells on Right side = %d\n", n_cells_R); + +// Partie de gauche : + + for(Float_t phi = 15.0; phi < 360.0; phi = phi + phi_deg) + { + phi_rad = phi*pi/180.; + AliMatrix(idrotm[902], 90.0, phi, 90.0, 90.0 +phi, 0.0 , 0.0); + gMC->Gspos("V0L0",n_detec_L,"V0LE",-dist0_left*TMath::Sin(phi_rad), + dist0_left*TMath::Cos(phi_rad),offset_left + half_thick_qua1,idrotm[902],"ONLY"); + n_detec_L++; + } + + + gMC->Gspos("V0LE",1,"alic",0.0,0.0,-350.0-fThickness1/2.0,0,"ONLY"); + + n_cells_L = (n_detec_L - 1) * 5; + printf(" \n\n\n"); + printf(" Number of cells on Left side = %d\n\n", n_cells_L); + } + //_____________________________________________________________________________ void AliVZEROv0::BuildGeometry() { // Builds simple ROOT TNode geometry for event display - + Int_t i; printf("\n"); - for(i=0;i<35;i++) printf("*"); + for(i=0;i<30;i++) printf("*"); printf(" VZERO BuildGeometry "); - for(i=0;i<35;i++) printf("*"); + for(i=0;i<30;i++) printf("*"); printf("\n"); - TNode *Top, *Node0, *Node1, *Node2; - TNode *Node3, *Node4 , *Node5, *Node6 , *Node7; + TNode *Top; + TNode *V0Rnode, *V0Rnode0, *V0Rnode6 , *V0Rnode7, *V0Rnode8, *V0Rnode9; TNode *V0Rnode1, *V0Rnode2, *V0Rnode3, *V0Rnode4, *V0Rnode5; + TNode *V0Lnode, *V0Lnode0; + TNode *V0Lnode1, *V0Lnode2, *V0Lnode3, *V0Lnode4, *V0Lnode5; + const int kColorVZERO = kGreen; - + Top = gAlice->GetGeometry()->GetNode("alice"); Float_t height1, height2, height3, height4, height5; @@ -526,13 +714,19 @@ void AliVZEROv0::BuildGeometry() Float_t pi = TMath::Pi(); Float_t thick_alu; - height1 = 2.3; - height2 = 3.7; - height3 = 6.2; - height4 = 10.5; - height5 = 10.5; +// height1 = 1.9; +// height2 = 3.7; +// height3 = 6.2; +// height4 = 10.5; +// height5 = 10.5; + + height1 = 2.0; // height of cell 1, in cm + height2 = 3.2; // height of cell 2, in cm + height3 = 4.9; // height of cell 3, in cm + height4 = 7.5; // height of cell 4, in cm + height5 = 12.0; // height of cell 5, in cm - theta = pi/12.0/2.0; + theta = pi/6.0/2.0; half_thick_alu = 0.0025; thick_alu = 2.0 * half_thick_alu; half_thick_qua1 = fThickness1/2.0; @@ -542,7 +736,7 @@ void AliVZEROv0::BuildGeometry() half_thick_qua5 = half_thick_qua4 - 0.25; zdet = 86.9 +fThickness/2.0; - r0 = 3.4; + r0 = 4.0; height = height1 + height2 + height3 + height4 + height5; r5 = r0 + height; @@ -562,7 +756,7 @@ void AliVZEROv0::BuildGeometry() fNodes->Add(V0Rnode); V0Rnode->SetVisibility(2); - + // Rondelles de carbone (epaisseur 1 mm) de maintien des cellules ... @@ -571,7 +765,7 @@ void AliVZEROv0::BuildGeometry() parbox[0] = 0.; parbox[1] = 360.; - parbox[2] = 24; + parbox[2] = 12; parbox[3] = 2; parbox[4] = -0.1/2.0; parbox[5] = r0; @@ -746,14 +940,15 @@ void AliVZEROv0::BuildGeometry() Float_t phi; - Float_t phi_deg= 180./12.; + Float_t phi_deg= 180./6.; Float_t phi_rad; Float_t xdet,ydet; - Int_t n_detec = 1; + Int_t n_detec_R = 1; + char NameNode[12]; - for (phi = 7.5; phi < 360.0; phi = phi + phi_deg) + for (phi = 15.0; phi < 360.0; phi = phi + phi_deg) { TRotMatrix* mat920 = new TRotMatrix("rot920","rot920", 90.0, +phi, 90., 90.+phi, 0.0, 0.0 ); @@ -763,323 +958,283 @@ void AliVZEROv0::BuildGeometry() ydet = dist0*TMath::Cos(phi_rad); - sprintf(NameNode,"SUBDET%d",n_detec); + sprintf(NameNode,"SUBDER%d",n_detec_R); V0Rnode->cd(); V0Rnode0 = new TNode(NameNode,NameNode,V0R0,-xdet,ydet, offset + half_thick_qua1,mat920); V0Rnode0->SetLineColor(kColorVZERO); fNodes->Add(V0Rnode0); - n_detec++; + n_detec_R++; - sprintf(NameNode,"SUBDET%d",n_detec); + sprintf(NameNode,"SUBDER%d",n_detec_R); V0Rnode0->cd(); V0Rnode1 = new TNode(NameNode,NameNode,V0R1,0.0,dist1, 0.0,0); V0Rnode1->SetLineColor(kColorVZERO); fNodes->Add(V0Rnode1); - n_detec++; + n_detec_R++; - sprintf(NameNode,"SUBDET%d",n_detec); + sprintf(NameNode,"SUBDER%d",n_detec_R); V0Rnode0->cd(); V0Rnode2 = new TNode(NameNode,NameNode,V0R2,0.0,dist2, - half_thick_qua1 + half_thick_qua2,0); V0Rnode2->SetLineColor(kColorVZERO); fNodes->Add(V0Rnode2); - n_detec++; + n_detec_R++; - sprintf(NameNode,"SUBDET%d",n_detec); + sprintf(NameNode,"SUBDER%d",n_detec_R); V0Rnode0->cd(); V0Rnode3 = new TNode(NameNode,NameNode,V0R3,0.0,dist3, - half_thick_qua1 + half_thick_qua3,0); V0Rnode3->SetLineColor(kColorVZERO); fNodes->Add(V0Rnode3); - n_detec++; + n_detec_R++; - sprintf(NameNode,"SUBDET%d",n_detec); + sprintf(NameNode,"SUBDER%d",n_detec_R); V0Rnode0->cd(); V0Rnode4 = new TNode(NameNode,NameNode,V0R4,0.0,dist4, - half_thick_qua1 + half_thick_qua4,0); V0Rnode4->SetLineColor(kColorVZERO); fNodes->Add(V0Rnode4); - n_detec++; + n_detec_R++; - sprintf(NameNode,"SUBDET%d",n_detec); + sprintf(NameNode,"SUBDER%d",n_detec_R); V0Rnode0->cd(); V0Rnode5 = new TNode(NameNode,NameNode,V0R5,0.0,dist5, - half_thick_qua1 + half_thick_qua5,0); V0Rnode5->SetLineColor(kColorVZERO); fNodes->Add(V0Rnode5); - n_detec++; + n_detec_R++; V0Rnode0->SetVisibility(2); } - -// Here I add the enveloppe of the FRONTAL ABSORBER defined by Andreas Morsch -// in AliABSOv0::CreateGeometry() : - Float_t parm[24]; - Float_t dz; - - Top->cd(); +// Left side of VZERO : - parm[0] = 0.; - parm[1] = 360.; - parm[2] = 7.; - - parm[3] = -(zRear-zAbsStart)/2.; - parm[4] = rAbs; - parm[5] = zAbsStart * TMath::Tan(theta1); - - parm[6] = parm[3]+(zNose-zAbsStart); - parm[7] = rAbs; - parm[8] = zNose * TMath::Tan(theta1); - - parm[9] = parm[3]+(zConeTPC-zAbsStart); - parm[10] = rAbs; - parm[11] = parm[8] + (parm[9] - parm[6]) * TMath::Tan(theta2); - - parm[12] = parm[3]+(zOpen-zAbsStart); - parm[13] = rAbs; - parm[14] = parm[11] + (parm[12] - parm[9]) * TMath::Tan(accMax); - - parm[15] = parm[3]+(zRear-dRear-zAbsStart); - parm[16] = rAbs + (parm[15] - parm[12]) * TMath::Tan(thetaOpen1) ; - parm[17] = parm[14] + (parm[15] - parm[12]) * TMath::Tan(accMax); - - parm[18] = parm[3]+(zRear-dRear-zAbsStart); - parm[19] = (zRear-dRear) * TMath::Tan(accMin); - parm[20] = parm[14] + (parm[18] - parm[12]) * TMath::Tan(accMax); - - parm[21] = -parm[3]; - parm[22] = zRear* TMath::Tan(accMin); - parm[23] = parm[20] + (parm[21] - parm[18]) * TMath::Tan(accMax); - printf(" zRear, zAbsStart, rAbs = %f , %f , %f \n\n", - zRear, zAbsStart, rAbs ); - - - TPCON *abs0 = new TPCON("abs0", "abs0", "void", parm[0], parm[1], parm[2]); - - - abs0->DefineSection(0, parm[3], parm[4], parm[5] ); - abs0->DefineSection(1, parm[6], parm[7], parm[8] ); - abs0->DefineSection(2, parm[9], parm[10], parm[11] ); - abs0->DefineSection(3,parm[12], parm[13], parm[14] ); - abs0->DefineSection(4,parm[15], parm[16], parm[17] ); - abs0->DefineSection(5,parm[18], parm[19], parm[20] ); - abs0->DefineSection(6,parm[21], parm[22], parm[23] ); - - dz = (zRear-zAbsStart)/2.+zAbsStart; - - TRotMatrix* mat921 = new TRotMatrix("rot921","rot921",90.0,0.0,90.,90.0,180.0,0.0); - - Node0 = new TNode("abs0","abs0",abs0,0.0,0.0,dz,0); - Node0->SetLineColor(38); - fNodes->Add(Node0); - - - Float_t cpar[5]; - - cpar[0] = (zNose - zAbsStart) / 2.; - cpar[1] = zAbsStart * TMath::Tan(accMax); - cpar[2] = zAbsStart * TMath::Tan(theta1)-dSteel; - cpar[3] = zNose * TMath::Tan(accMax); - cpar[4] = zNose * TMath::Tan(theta1)-dSteel; + Float_t dist0_left; + Float_t r0_left = 4.3; + Float_t height1_left = 2.6; + Float_t height2_left = 4.1; + Float_t height3_left = 6.4; + Float_t height4_left = 10.2; + Float_t height5_left = 16.9; + Float_t height_left = height1_left + height2_left + height3_left + + height4_left + height5_left; + Float_t r5_left = r0_left + height_left; - dz = -(zRear-zAbsStart)/2.+cpar[0]; - - TCONE *abs1 = new TCONE("abs1", "abs1", "void", cpar[0], cpar[1], cpar[2], - cpar[3], cpar[4]); - - Node0->cd(); + partube[0] = r0_left; + partube[1] = (r5_left) / TMath::Cos(theta); + partube[2] = fThickness1/2.0; - Node1 = new TNode("abs1","abs1",abs1,0.0,0.0,dz,0); - Node1->SetLineColor(7); - fNodes->Add(Node1); - -// Here I add a reference box to visualise the vertex zone : - - Top->cd(); - - Float_t paref[3]; - - paref[0] = 10.0; - paref[1] = 15.0; - paref[2] = 5.6; - - TBRIK *aref = new TBRIK("aref","aref", "void", paref[0],paref[1],paref[2]); - - Node2 = new TNode("aref","aref",aref,0.0,0.0,0.0,0); - Node2->SetLineColor(kBlue); - fNodes->Add(Node2); - -// Here I add the mother volume QBPM -// and the flanges QB29, QB22 et QB24 defined by Andreas Morsch -// in AliPIPEv0::CreateGeometry() : + TTUBE *V0LE = new TTUBE("V0LE", "V0LE", "void", partube[0], partube[1], partube[2]); + + Top->cd(); + + V0Lnode = new TNode("V0LE","V0LE",V0LE,0.0,0.0,-350.0-fThickness1/2.0,0); + + V0Lnode->SetLineColor(kBlue); + fNodes->Add(V0Lnode); + + V0Lnode->SetVisibility(2); + + dist0_left = r0_left + height_left / 2.0; + thick_alu = 2.0*half_thick_alu; + + par[0] = half_thick_qua1; + par[1] = 0.0; + par[2] = 0.0; + par[3] = height_left / 2.0 ; + par[4] = TMath::Tan(theta) * r0_left; + par[5] = TMath::Tan(theta) * r5_left; + par[6] = 0.0; + par[7] = height_left / 2.0 ; + par[8] = TMath::Tan(theta) * r0_left; + par[9] = TMath::Tan(theta) * r5_left; + par[10] = 0.0; + + TTRAP *V0L0 = new TTRAP("V0L0", "V0L0", "void", par[0], par[1], par[2], par[3], + par[4], par[5], par[6], par[7], par[8], par[9], par[10]); + + + Float_t dist1_left; + Float_t r1_left; + Float_t offset_left; + + dist1_left = (- height_left + height1_left) /2.0; + r1_left = r0_left + height1_left; + offset_left = - fThickness1/2.0 + 0.1; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height1_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r0_left - thick_alu; + par[5] = TMath::Tan(theta) * r1_left- thick_alu; + par[7] = height1_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r0_left - thick_alu; + par[9] = TMath::Tan(theta) * r1_left - thick_alu; + + TTRAP *V0L1 = new TTRAP("V0L1", "V0L1", "void", par[0], par[1], par[2], par[3], + par[4], par[5], par[6], par[7], par[8], par[9], par[10]); - - Float_t parp[36]; + Float_t dist2_left; + Float_t r2_left; -// Mother Volume QBPM : + dist2_left = (- height_left + height2_left) /2.0 + height1_left; + r2_left = r1_left + height2_left; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height2_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r1_left - thick_alu; + par[5] = TMath::Tan(theta) * r2_left - thick_alu; + par[7] = height2_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r1_left - thick_alu; + par[9] = TMath::Tan(theta) * r2_left - thick_alu; - parp[0] = 0; - parp[1] = 360; - parp[2] = 11; + TTRAP *V0L2 = new TTRAP("V0L2", "V0L2", "void", par[0], par[1], par[2], par[3], + par[4], par[5], par[6], par[7], par[8], par[9], par[10]); - parp[3] = - 90; - parp[4] = 0; - parp[5] = 5.8; - - parp[6] = - 81.0; - parp[7] = 0.; - parp[8] = 5.8; - - parp[9] = - 81.; - parp[10] = 0.; - parp[11] = 4.22; - parp[12] = - 28.00; - parp[13] = 0; - parp[14] = 4.22; - - parp[15] = - 28.00; - parp[16] = 0; - parp[17] = 3.2; - - parp[18] = 0; - parp[19] = 0; - parp[20] = 3.2; + + Float_t dist3_left; + Float_t r3_left; + + dist3_left = (- height_left + height3_left) /2.0 + height1_left + height2_left; + r3_left = r2_left + height3_left; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height3_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r2_left - thick_alu; + par[5] = TMath::Tan(theta) * r3_left - thick_alu; + par[7] = height3_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r2_left - thick_alu; + par[9] = TMath::Tan(theta) * r3_left - thick_alu; + + TTRAP *V0L3 = new TTRAP("V0L3", "V0L3", "void", par[0], par[1], par[2], par[3], + par[4], par[5], par[6], par[7], par[8], par[9], par[10]); + + + Float_t dist4_left; + Float_t r4_left; + + dist4_left = (- height_left + height4_left) /2.0 + height1_left + + height2_left + height3_left; + r4_left = r3_left + height4_left; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height4_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r3_left - thick_alu; + par[5] = TMath::Tan(theta) * r4_left - thick_alu; + par[7] = height4_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r3_left - thick_alu; + par[9] = TMath::Tan(theta) * r4_left - thick_alu; + + TTRAP *V0L4 = new TTRAP("V0L4", "V0L4", "void", par[0], par[1], par[2], par[3], + par[4], par[5], par[6], par[7], par[8], par[9], par[10]); + - parp[21] = 28.00; - parp[22] = 0; - parp[23] = 3.2; + Float_t dist5_left; - parp[24] = 28.00; - parp[25] = 0; - parp[26] = 4.22; + + dist5_left = (- height_left + height5_left) /2.0 + height1_left + + height2_left + height3_left + height4_left; - parp[27] = 250; - parp[28] = 0; - parp[29] = 4.22; + + par[0] = half_thick_qua1 - thick_alu; + par[3] = height5_left / 2.0 - thick_alu; + par[4] = TMath::Tan(theta) * r4_left - thick_alu; + par[5] = TMath::Tan(theta) * r5_left - thick_alu; + par[7] = height5_left / 2.0 - thick_alu; + par[8] = TMath::Tan(theta) * r4_left - thick_alu; + par[9] = TMath::Tan(theta) * r5_left - thick_alu; + + TTRAP *V0L5 = new TTRAP("V0L5", "V0L5", "void", par[0], par[1], par[2], par[3], + par[4], par[5], par[6], par[7], par[8], par[9], par[10]); - parp[30] = 250; - parp[31] = 0; - parp[32] = 5; - parp[33] = 800; - parp[34] = 0; - parp[35] = 5; - - TPCON *pip0 = new TPCON("pip0", "pip0", "void", parp[0], parp[1], parp[2]); + Int_t n_detec_L = 1; + + for (phi = 15.0; phi < 360.0; phi = phi + phi_deg) + { - pip0->DefineSection( 0, parp[3], parp[4], parp[5] ); - pip0->DefineSection( 1, parp[6], parp[7], parp[8] ); - pip0->DefineSection( 2, parp[9], parp[10], parp[11] ); - pip0->DefineSection( 3,parp[12], parp[13], parp[14] ); - pip0->DefineSection( 4,parp[15], parp[16], parp[17] ); - pip0->DefineSection( 5,parp[18], parp[19], parp[20] ); - pip0->DefineSection( 6,parp[21], parp[22], parp[23] ); - pip0->DefineSection( 7,parp[24], parp[25], parp[26] ); - pip0->DefineSection( 8,parp[27], parp[28], parp[29] ); - pip0->DefineSection( 9,parp[30], parp[31], parp[32] ); - pip0->DefineSection(10,parp[33], parp[34], parp[35] ); - - dz = 0.0; - - Top->cd(); - - Node3 = new TNode("pip0","pip0",pip0,0.0,0.0,dz,mat921); - Node3->SetLineColor(10); - fNodes->Add(Node3); - Node3->SetVisibility(2); - -// Flanges QB29 at 654.8 and 254.8 cms : - - Float_t ptube[3]; - - ptube[0] = 3.0; - ptube[1] = 4.9; - ptube[2] = 2.2; + TRotMatrix* mat920 = new TRotMatrix("rot920","rot920", 90.0, +phi, 90., 90.+phi, 0.0, 0.0 ); - TTUBE *pip1 = new TTUBE("pip1", "pip1", "void", ptube[0], ptube[1], ptube[2]); + phi_rad = phi*pi/180.; + xdet = dist0_left*TMath::Sin(phi_rad); + ydet = dist0_left*TMath::Cos(phi_rad); + + + sprintf(NameNode,"SUBDEL%d",n_detec_L); + + V0Lnode->cd(); + V0Lnode0 = new TNode(NameNode,NameNode,V0L0,-xdet,ydet, offset_left + half_thick_qua1,mat920); + V0Lnode0->SetLineColor(kColorVZERO); + fNodes->Add(V0Lnode0); + n_detec_L++; + + sprintf(NameNode,"SUBDEL%d",n_detec_L); + V0Lnode0->cd(); + V0Lnode1 = new TNode(NameNode,NameNode,V0L1,0.0,dist1_left, 0.0,0); + V0Lnode1->SetLineColor(kColorVZERO); + fNodes->Add(V0Lnode1); + n_detec_L++; + + sprintf(NameNode,"SUBDEL%d",n_detec_L); + V0Lnode0->cd(); + V0Lnode2 = new TNode(NameNode,NameNode,V0L2,0.0,dist2_left, 0.0,0); + V0Lnode2->SetLineColor(kColorVZERO); + fNodes->Add(V0Lnode2); + n_detec_L++; + + + sprintf(NameNode,"SUBDEL%d",n_detec_L); + V0Lnode0->cd(); + V0Lnode3 = new TNode(NameNode,NameNode,V0L3,0.0,dist3_left, 0.0,0); + V0Lnode3->SetLineColor(kColorVZERO); + fNodes->Add(V0Lnode3); + n_detec_L++; + + sprintf(NameNode,"SUBDEL%d",n_detec_L); + V0Lnode0->cd(); + V0Lnode4 = new TNode(NameNode,NameNode,V0L4,0.0,dist4_left, 0.0,0); + V0Lnode4->SetLineColor(kColorVZERO); + fNodes->Add(V0Lnode4); + n_detec_L++; - Node3->cd(); + sprintf(NameNode,"SUBDEL%d",n_detec_L); + V0Lnode0->cd(); + V0Lnode5 = new TNode(NameNode,NameNode,V0L5,0.0,dist5_left, 0.0,0); + V0Lnode5->SetLineColor(kColorVZERO); + fNodes->Add(V0Lnode5); + n_detec_L++; + V0Lnode0->SetVisibility(2); - Node4 = new TNode("pip1","pip1",pip1,0.0,0.0,254.8,0); - Node4->SetLineColor(6); - fNodes->Add(Node4); - - TTUBE *pip2 = new TTUBE("pip2", "pip2", "void", ptube[0], ptube[1], ptube[2]); - - Node3->cd(); - - Node5 = new TNode("pip2","pip2",pip2,0.0,0.0,654.8,0); - Node5->SetLineColor(6); - fNodes->Add(Node5); - - -// Al-Be section QBAB at 335.0 cm (LEFT side) : - - ptube[0] = 2.90; - ptube[1] = 3.05; - ptube[2] = 171.0; - - TTUBE *pip3 = new TTUBE("pip3", "pip3", "void", ptube[0], ptube[1], ptube[2]); - - Node3->cd(); + } - Node6 = new TNode("pip3","pip3",pip3,0.0,0.0,335.0+ptube[2],0); - Node6->SetLineColor(6); - fNodes->Add(Node6); - -// Here I add the flange which is sitting on beam line -// right in front of V0R detector, and which I found on CERN drawing -// entitled : ALICE BEAM VACCUM CHAMBER - RB26 version III : - - ptube[0] = 3.0; - ptube[1] = 5.675; - ptube[2] = 0.9; - - TTUBE *pip4 = new TTUBE("pip4", "pip4", "void", ptube[0], ptube[1], ptube[2]); - - Node3->cd(); - - - Node7 = new TNode("pip4","pip4",pip4,0.0,0.0,-85.0-0.9,0); - Node7->SetLineColor(6); - fNodes->Add(Node7); - - } + +} //------------------------------------------------------------------------ void AliVZEROv0::CreateMaterials() { - Int_t i; + Int_t i; - printf("\n"); - for(i=0;i<35;i++) printf("*"); - printf(" VZERO create materials "); - for(i=0;i<35;i++) printf("*"); - printf("\n"); + printf("\n"); + for(i=0;i<30;i++) printf("*"); + printf(" VZERO create materials "); + for(i=0;i<30;i++) printf("*"); + printf("\n"); + -/* ................... OLD VALUES ( used in RICH) ............................ - Float_t ppckov[14] = { 5.63e-9,5.77e-9,5.9e-9,6.05e-9,6.2e-9,6.36e-9,6.52e-9, - 6.7e-9,6.88e-9,7.08e-9,7.3e-9,7.51e-9,7.74e-9,8e-9 }; - Float_t rindex_quarz[14] = { 1.528309,1.533333, - 1.538243,1.544223,1.550568,1.55777, - 1.565463,1.574765,1.584831,1.597027, - 1.611858,1.6277,1.6472,1.6724 }; - Float_t absco_quarz[14] = { 20.126,16.27,13.49,11.728,9.224,8.38,7.44,7.17, - 6.324,4.483,1.6,.323,.073,0. }; -...................................................................................... */ - - Float_t ppckov[14] = { 5.5e-9, 5.7e-9, 5.9e-9, 6.1e-9, 6.3e-9, 6.5e-9, 6.7e-9, 6.9e-9, 7.1e-9, 7.3e-9, 7.5e-9, 7.7e-9, 7.9e-9, 8.1e-9 }; + + + Float_t ppckov_alu[14] = { 5.5e-9, 5.7e-9, 5.9e-9, 6.1e-9, 6.3e-9, 6.5e-9, 6.7e-9, + 6.9e-9, 7.1e-9, 7.3e-9, 7.5e-9, 7.7e-9, 7.9e-9, 8.1e-9 }; Float_t rindex_quarz[14] = { 1.52398, 1.53090, 1.53835, 1.54641, 1.55513, 1.56458, 1.57488, 1.58611, 1.59842, 1.61197, 1.62696, 1.64362, - 1.662295, 1.68337 }; + 1.662295, 1.68337 }; Float_t absco_quarz[14] = { 105.8, 45.656, 35.665, 28.598, 25.007, 21.04, 17.525, 14.177, 9.282, 4.0925, 1.149, 0.3627, 0.1497, 0.05 }; @@ -1088,11 +1243,12 @@ void AliVZEROv0::CreateMaterials() Float_t rindex_alu[14] = { 1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1. }; - + + Float_t absco_alu[14] = { 1e-4,1e-4,1e-4,1e-4,1e-4,1e-4,1e-4,1e-4,1e-4,1e-4, 1e-4,1e-4,1e-4,1e-4 }; Float_t effic_alu[14] = { 1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1. }; - + Int_t *idtmed = fIdtmed->GetArray()-2999; @@ -1128,12 +1284,12 @@ void AliVZEROv0::CreateMaterials() // Definition of materials : - AliMaterial( 1, "AIR A$", 14.61, 7.3, .001205, 30420., 67500); - AliMaterial(11, "AIR I$", 14.61, 7.3, .001205, 30420., 67500); - AliMaterial( 2, "CARBON$" , 12.01, 6.0, 2.265, 18.8, 49.9); + AliMaterial( 1, "AIR A$", 14.61, 7.3, .001205, 30420., 67500, 0, 0); + AliMaterial(11, "AIR I$", 14.61, 7.3, .001205, 30420., 67500, 0, 0); + AliMaterial( 2, "CARBON$" , 12.01, 6.0, 2.265, 18.8, 49.9, 0, 0); AliMixture( 3, "QUA", aqua, zqua, densqua, nlmatqua, wmatqua); - AliMaterial( 4, "ALUMINIUM1$", 26.98, 13., 2.7, 8.9, 37.2); - AliMaterial( 5, "ALUMINIUM2$", aal, zal, densal, radlal, 0); + AliMaterial( 4, "ALUMINIUM1$", 26.98, 13., 2.7, 8.9, 37.2, 0, 0); + AliMaterial( 5, "ALUMINIUM2$", aal, zal, densal, radlal, 0, 0, 0); AliMixture( 6, "Scintillator$",ascin,zscin,denscin,-2,wscin); @@ -1144,27 +1300,41 @@ void AliVZEROv0::CreateMaterials() Float_t tmaxfd, stemax, deemax, epsil, stmin; - tmaxfd = -10.; - stemax = -0.1; - deemax = -0.1; - epsil = -0.01; - stmin = -0.001; - + tmaxfd = 10.; + stemax = 0.1; + deemax = 0.1; + epsil = 0.001; + stmin = 0.001; + + printf(" \n"); + printf(" StepQua, StepAlu = %f %f \n",fMaxStepQua,fMaxStepAlu); + printf(" DeStepQua, DeStepAlu = %f %f \n",fMaxDestepQua,fMaxDestepAlu); + printf(" \n"); + // Active Air : - AliMedium(1, "ACTIVE AIR$", 1, 1, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); + AliMedium(1, "ACTIVE AIR$", 1, 1, ISXFLD, SXMGMX, + 10.0, 1.0, 0.1, 0.1, 10.0, 0, 0) ; // Inactive air : - AliMedium(11, "INACTIVE AIR$", 11, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); + AliMedium(11, "INACTIVE AIR$", 11, 0, ISXFLD, SXMGMX, + 10.0, 1.0, 0.1, 0.1, 10.0, 0, 0) ; - AliMedium(2, "CARBON$ ", 2, 1, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); + AliMedium(2, "CARBON$ ", 2, 1, ISXFLD, SXMGMX, + tmaxfd, stemax, deemax, epsil, stmin, 0, 0); - AliMedium(3, "QUARZ$", 3, 1, ISXFLD, SXMGMX, tmaxfd, fMaxStepQua, fMaxDestepQua, epsil, stmin); + AliMedium(3, "QUARZ$", 3, 1, ISXFLD, SXMGMX, + tmaxfd, fMaxStepQua, fMaxDestepQua, epsil, stmin, 0, 0); - AliMedium(4,"ALUMINUM1$",4, 1, ISXFLD, SXMGMX, tmaxfd, fMaxStepAlu, fMaxDestepAlu, epsil, stmin); - AliMedium(5,"ALUMINUM2$",5, 1, ISXFLD, SXMGMX, tmaxfd, fMaxStepAlu, fMaxDestepAlu, epsil, stmin); - AliMedium(6,"SCINTILLATOR$",6, 1, ISXFLD, SXMGMX, 10., .01, 1., .003, .003); + AliMedium(4,"ALUMINUM1$",4, 1, ISXFLD, SXMGMX, + tmaxfd, fMaxStepAlu, fMaxDestepAlu, epsil, stmin, 0, 0); + + + AliMedium(5,"ALUMINUM2$",5, 1, ISXFLD, SXMGMX, + tmaxfd, fMaxStepAlu, fMaxDestepAlu, epsil, stmin, 0, 0); + + AliMedium(6,"SCINTILLATOR$",6, 1, ISXFLD, SXMGMX, 10., .01, 1., .003, .003, 0, 0); gMC->Gstpar(idtmed[3000], "LOSS", 1.); // [3000] = air ACTIF [3010] = air INACTIF gMC->Gstpar(idtmed[3000], "HADR", 1.); @@ -1179,7 +1349,9 @@ void AliVZEROv0::CreateMaterials() gMC->Gstpar(idtmed[3002], "LOSS", 1.); // [3002] = quartz gMC->Gstpar(idtmed[3002], "HADR", 1.); gMC->Gstpar(idtmed[3002], "DCAY", 1.); - gMC->Gstpar(idtmed[3002], "DRAY", 1.); + gMC->Gstpar(idtmed[3002], "DRAY", 1.); + gMC->Gstpar(idtmed[3002], "CUTGAM",0.5E-4) ; + gMC->Gstpar(idtmed[3002], "CUTELE",1.0E-4) ; gMC->Gstpar(idtmed[3003], "LOSS", 1.); // [3003] = normal aluminum gMC->Gstpar(idtmed[3003], "HADR", 1.); @@ -1190,16 +1362,18 @@ void AliVZEROv0::CreateMaterials() gMC->Gstpar(idtmed[3004], "HADR", 1.); gMC->Gstpar(idtmed[3004], "DCAY", 1.); gMC->Gstpar(idtmed[3004], "DRAY", 1.); + gMC->Gstpar(idtmed[3004], "CUTGAM",0.5E-4) ; + gMC->Gstpar(idtmed[3004], "CUTELE",1.0E-4) ; gMC->Gstpar(idtmed[3005], "LOSS", 1.); // [3005] = scintillator gMC->Gstpar(idtmed[3005], "HADR", 1.); gMC->Gstpar(idtmed[3005], "DCAY", 1.); gMC->Gstpar(idtmed[3005], "DRAY", 1.); - geant3->Gsckov(idtmed[3002], 14, ppckov, absco_quarz, effic_all,rindex_quarz); - - geant3->Gsckov(idtmed[3004], 14, ppckov, absco_alu, effic_alu, rindex_alu); + geant3->Gsckov(idtmed[3002], 14, ppckov, absco_quarz, effic_all,rindex_quarz); + geant3->Gsckov(idtmed[3004], 14, ppckov_alu, absco_alu, effic_alu, rindex_alu); + } //--------------------------------------------------------------------- void AliVZEROv0::DrawModule() @@ -1210,9 +1384,9 @@ void AliVZEROv0::DrawModule() Int_t i; printf("\n"); - for(i=0;i<35;i++) printf("*"); + for(i=0;i<30;i++) printf("*"); printf(" VZERO DrawModule "); - for(i=0;i<35;i++) printf("*"); + for(i=0;i<30;i++) printf("*"); printf("\n"); @@ -1224,21 +1398,13 @@ void AliVZEROv0::Init() // Initialises version 0 of the VZERO Detector // Just prints an information message - Int_t i; - - printf("\n"); - for(i=0;i<35;i++) printf("*"); - printf(" VZERO_Init \n"); - for(i=0;i<35;i++) printf("*"); - printf("\n"); - - fMulti = 0; - fNCerenkovs = 0; - fNGCerenkovs = 0; - fNdead = 0; - - BookingHistograms(); + printf(" VZERO version %d initialized \n",IsVersion()); +// gMC->SetMaxStep(fMaxStepAlu); +// gMC->SetMaxStep(fMaxStepQua); + +// AliVZERO::Init(); + } //------------------------------------------------------------------- @@ -1246,138 +1412,115 @@ void AliVZEROv0::Init() void AliVZEROv0::StepManager() { -// Minimal version of StepManager : -// Everything has been removed, I only AddHit whenever hit is in -// volume V0RI. - - Int_t copy; - Int_t vol[4]; // (box, layer, row, column) indices - Float_t hits[19]; // position wrt MRS, energies... +// (Very)Minimal version of StepManager + + + Int_t copy; + static Int_t vol[4]; + static Float_t hits[15]; TLorentzVector pos; - Float_t global[3]; - Float_t local[3]; - TLorentzVector momentum; + TLorentzVector mom; Float_t theta; Float_t phi; - Float_t mom[4]; Float_t kRaddeg = 180/TMath::Pi(); + Float_t RingNumber; + + Int_t ipart; - Float_t TrackEnters = 0.0; - Float_t TrackExits = 0.0; - Float_t Cerenkov = 0.0; - - gMC->SetMaxStep(fMaxStepAlu); - gMC->SetMaxStep(fMaxStepQua); - - if (!gMC->IsTrackAlive()) return; - - if (gMC->IsTrackEntering()) TrackEnters = 1.0; - if (gMC->IsTrackExiting() ) TrackExits = 1.0; - if (gMC->TrackPid() == 50000050) Cerenkov = 1.0; - - - - gMC->TrackPosition(pos); - gMC->TrackMomentum(momentum); - - mom[0] = momentum[0]; - mom[1] = momentum[1]; - mom[2] = momentum[2]; - mom[3] = momentum[3]; - - Double_t tc = mom[0]*mom[0]+mom[1]*mom[1]; - Double_t rt = TMath::Sqrt(tc); - theta = Float_t(TMath::ATan2(rt,Double_t(mom[2])))*kRaddeg; - phi = Float_t(TMath::ATan2(Double_t(mom[1]),Double_t(mom[0])))*kRaddeg; - - global[0] = pos[0]; - global[1] = pos[1]; - global[2] = pos[2]; - - - gMC->Gmtod(global,local,1); + +// TGeant3 *geant3 = (TGeant3*) gMC; +// Int_t Nphot = geant3->Gckin2()->ngphot; - hits[0] = global[0]; - hits[1] = global[1]; - hits[2] = global[2]; - hits[3] = local[0]; - hits[4] = local[1]; - hits[5] = local[2]; - hits[6] = gMC->Edep(); - hits[7] = gMC->Etot(); - hits[8] = Float_t (gMC->TrackPid()); - hits[9] = Float_t (gMC->IdFromPDG(gMC->TrackPid())); - hits[10] = gMC->TrackTime(); - hits[11] = TrackEnters; - hits[12] = TrackExits; - hits[13] = gMC->TrackCharge(); - hits[14] = Cerenkov; + +// Only charged tracks : - hits[16] = theta; - hits[17] = phi; - + if ( !gMC->TrackCharge() || !gMC->IsTrackAlive() ) return; + + vol[0] = gMC->CurrentVolOffID(1, vol[1]); vol[2] = gMC->CurrentVolID(copy); vol[3] = copy; + if ( gMC->CurrentVolID(copy) == gMC->VolId("V0R1") || + gMC->CurrentVolID(copy) == gMC->VolId("V0L1") ) + RingNumber = 1.0; + else if ( gMC->CurrentVolID(copy) == gMC->VolId("V0R2") || + gMC->CurrentVolID(copy) == gMC->VolId("V0L2") ) + RingNumber = 2.0; + else if ( gMC->CurrentVolID(copy) == gMC->VolId("V0R3") || + gMC->CurrentVolID(copy) == gMC->VolId("V0L3") ) + RingNumber = 3.0; + else if ( gMC->CurrentVolID(copy) == gMC->VolId("V0R4") || + gMC->CurrentVolID(copy) == gMC->VolId("V0L4") ) + RingNumber = 4.0; + else if ( gMC->CurrentVolID(copy) == gMC->VolId("V0R5") || + gMC->CurrentVolID(copy) == gMC->VolId("V0L5") ) + RingNumber = 5.0; + else + RingNumber = 0.0; + + if (gMC->IsTrackEntering() && RingNumber > 0.5) { + + gMC->TrackPosition(pos); + + gMC->TrackMomentum(mom); + Double_t tc = mom[0]*mom[0]+mom[1]*mom[1]; + Double_t Pt = TMath::Sqrt(tc); + Double_t Pmom = TMath::Sqrt(tc+mom[2]*mom[2]); - if (gMC->CurrentVolID(copy) >= gMC->VolId("V0RI") && - gMC->CurrentVolID(copy) <= gMC->VolId("V0E4")) - { - AddHit(gAlice->CurrentTrack(), vol, hits); - } - - } - -//--------------------------------------------------------------------- -void AliVZEROv0::AddHit(Int_t track, Int_t* vol, Float_t* hits) -{ - - // Adds a hit - - - TClonesArray &lhits = *fHits; - - new(lhits[fNhits++]) AliVZEROhit(fIshunt, track, vol, hits); - + theta = Float_t(TMath::ATan2(Pt,Double_t(mom[2])))*kRaddeg; + phi = Float_t(TMath::ATan2(Double_t(mom[1]),Double_t(mom[0])))*kRaddeg; + + ipart = gMC->TrackPid(); + + hits[0] = pos[0]; + hits[1] = pos[1]; + hits[2] = pos[2]; + hits[3] = ipart; + +// Float_t ttime = gMC->TrackTime(); +// hits[4] = ttime*1e9; + + hits[4] = gMC->TrackTime(); + hits[5] = gMC->TrackCharge(); + hits[6] = theta; + hits[7] = phi; + hits[8] = RingNumber; + + hits[9] = Pt; + hits[10] = Pmom; + hits[11] = mom[0]; + hits[12] = mom[1]; + hits[13] = mom[2]; + + + AddHit(gAlice->CurrentTrack(), vol, hits); + + } + } -//--------------------------------------------------------------------- -void AliVZEROv0::FinishEvent() +//_____________________________________________________________________________ +void AliVZEROv0::AddHit(Int_t track, Int_t *vol, Float_t *hits) { - - printf("\n"); - for(int i=0;i<30;i++) printf("*"); - printf(" VZERO_finishevent"); - for(int i=0;i<30;i++) printf("*"); - printf("\n"); - - AddDigit(tracks, digits); - - - if(fMulti > 0) fhMultiplicity->Fill(fMulti); - fhCerenkov->Fill(fNCerenkovs); + // + // Add a VZERO hit + // - fMulti = 0; - fNCerenkovs = 0; - fNGCerenkovs = 0; - fNdead = 0; - + TClonesArray &lhits = *fHits; + new(lhits[fNhits++]) AliVZEROhit(fIshunt,track,vol,hits); } //--------------------------------------------------------------------- -void AliVZEROv0::AddDigit(Int_t *tracks, Int_t* digits) +void AliVZEROv0::AddDigits(Int_t *tracks, Int_t* digits) { TClonesArray &ldigits = *fDigits; - new(ldigits[fNdigits++]) AliVZEROdigit(tracks, digits); - } - //--------------------------------------------------------------------- void AliVZEROv0::MakeBranch(Option_t *option) { @@ -1387,7 +1530,7 @@ void AliVZEROv0::MakeBranch(Option_t *option) char branchname[10]; sprintf(branchname,"%s",GetName()); - + printf(" fBufferSize = %d \n",fBufferSize); char *H = strstr(option,"H"); @@ -1401,63 +1544,6 @@ void AliVZEROv0::MakeBranch(Option_t *option) if (fDigits && gAlice->TreeD() && D) { gAlice->TreeD()->Branch(branchname,&fDigits, fBufferSize); printf("* AliDetector::MakeBranch * Making Branch %s for digits\n",branchname); - } - - -} - -//--------------------------------------------------------------------- -void AliVZEROv0::BookingHistograms() -{ - - if (fhMultiplicity) - delete fhMultiplicity; - - if (fhGEANTcode) - delete fhGEANTcode; - - if (fhCerenkov) - delete fhCerenkov; - - if (fhToF) - delete fhToF; - -// fhMultiplicity = new TH1F("hMultiplicity", "hMultiplicity", 350, 0. , 350.); - - fhMultiplicity = new TH1F("hMultiplicity", "hMultiplicity", 100, 1. , 100.); - fhGEANTcode = new TH1F("hGEANTcode", "hGEANTcode", 50, 1., 50.); - fhCerenkov = new TH1F("hCerenkov", "hCerenkov", 100, 1., 100000.); - fhToF = new TH1F("hToF", "hToF",150,2.0,7.0); - -} - -//--------------------------------------------------------------------- -void AliVZEROv0::FinishRun() -{ - - SavingHistograms(); -} - - - -//--------------------------------------------------------------------- -void AliVZEROv0::SavingHistograms() -{ - -// Saves the histograms in a root file named "name.save" - - - Text_t outputname[8] ; - outputname = "Fileout"; - TFile output(outputname,"RECREATE"); - output.cd(); - - if (fhMultiplicity) - fhMultiplicity->Write(); - if (fhGEANTcode) - fhGEANTcode->Write(); - if (fhCerenkov) - fhCerenkov->Write(); - if (fhToF) - fhToF->Write(); + } + } diff --git a/VZERO/AliVZEROv0.h b/VZERO/AliVZEROv0.h index bb12f34579a..36d0a430917 100755 --- a/VZERO/AliVZEROv0.h +++ b/VZERO/AliVZEROv0.h @@ -18,34 +18,22 @@ public: AliVZEROv0(); AliVZEROv0(const char *name, const char *title); virtual ~AliVZEROv0() {} - virtual void AddHit(Int_t, Int_t*, Float_t*); - virtual void AddDigit(Int_t*, Int_t*); - virtual void FinishEvent(); + virtual void AddHit(Int_t , Int_t *, Float_t *); + virtual void AddDigits(Int_t* , Int_t* ); virtual void CreateGeometry(); virtual void BuildGeometry(); virtual void CreateMaterials(); virtual void DrawModule(); virtual void Init(); - virtual Int_t IsVersion() const {return 7;} + virtual void MakeBranch(Option_t *option); + virtual Int_t IsVersion() const {return 0;} virtual void StepManager(); - virtual void MakeBranch(Option_t* option); - virtual void BookingHistograms(); - virtual void SavingHistograms(); - virtual void FinishRun(); public: Int_t fIdSens1; // Sensitive volume in VZERO - Int_t digits[3]; + Int_t digits[1]; Int_t tracks[5]; - Int_t fNdead; -private: - TFile* fRootFile; - TH1F * fhMultiplicity; // Histo of charged particle multiplicity - TH1F * fhGEANTcode; // Histo of particle GEANT code - TH1F * fhCerenkov; // Histo of Cerenkov photons - TH1F * fhToF; // Histo of charged particles ToF - ClassDef(AliVZEROv0,1) //Class for VZERO version 0 }; diff --git a/VZERO/DrawVZERO.C b/VZERO/DrawVZERO.C index 64e094d1d81..e02706e0330 100755 --- a/VZERO/DrawVZERO.C +++ b/VZERO/DrawVZERO.C @@ -10,11 +10,18 @@ void DrawVZERO() gMC->Gsatt("*", "fill", 7); gMC->SetClipBox("."); gMC->DefaultRange(); + +// Vues de la partie gauche : - gMC->Gdraw("alic", 0, 0, 0, 10, 10, 0.2, 0.2); +// gMC->Gdraw("alic", 30, 0, 0, -25, 10, 0.2, 0.2); -// gMC->Gdraw("alic", 90, 0, 0, 90, 9, 0.92, 0.2 ); - +// Vues de la partie droite : + +// gMC->Gdraw("alic", 0, 0, 0, 10, 10, 0.2, 0.2); + + + gMC->Gdraw("alic", 90, 0, 0, 90, 9, 0.92, 0.2 ); + gMC->Gdhead(1111, "VZERO Detector"); diff --git a/VZERO/Makefile b/VZERO/Makefile index 1aa3519a5ef..aeb1c6082c5 100644 --- a/VZERO/Makefile +++ b/VZERO/Makefile @@ -9,7 +9,7 @@ PACKAGE = VZERO # C++ sources -SRCS = AliVZERO.cxx AliVZEROv0.cxx AliVZEROhit.cxx AliVZEROdigit.cxx +SRCS = AliVZERO.cxx AliVZEROv0.cxx AliVZEROv2.cxx AliVZEROhit.cxx AliVZEROdigit.cxx # C++ Headers diff --git a/VZERO/VZEROLinkDef.h b/VZERO/VZEROLinkDef.h index ff0dbd93960..49921ed0576 100755 --- a/VZERO/VZEROLinkDef.h +++ b/VZERO/VZEROLinkDef.h @@ -6,9 +6,10 @@ #pragma link off all classes; #pragma link off all functions; -#pragma link C++ class AliVZERO; -#pragma link C++ class AliVZEROv0; -#pragma link C++ class AliVZEROhit; -#pragma link C++ class AliVZEROdigit; +#pragma link C++ class AliVZERO+; +#pragma link C++ class AliVZEROv0+; +#pragma link C++ class AliVZEROv2+; +#pragma link C++ class AliVZEROhit+; +#pragma link C++ class AliVZEROdigit+; #endif diff --git a/VZERO/ViewVZERO.C b/VZERO/ViewVZERO.C index 99f146056ba..24b758f588d 100755 --- a/VZERO/ViewVZERO.C +++ b/VZERO/ViewVZERO.C @@ -1,44 +1,19 @@ void ViewVZERO() { - gMC->Gsatt("V0RI","seen",0); - - gMC->Gsatt("V0CA","seen",1); - gMC->Gsatt("V0IR","seen",1); - gMC->Gsatt("V0ER","seen",1); - - gMC->Gsatt("V0R0","seen",0); - - gMC->Gsatt("V0R1","seen",1); - gMC->Gsatt("V0R2","seen",1); - gMC->Gsatt("V0R3","seen",1); - gMC->Gsatt("V0R4","seen",1); - gMC->Gsatt("V0R5","seen",1); - - gMC->Gsatt("V0A1","seen",1); - gMC->Gsatt("V0A2","seen",1); - gMC->Gsatt("V0A3","seen",1); - gMC->Gsatt("V0A4","seen",1); - - gMC->Gsatt("V0B1","seen",1); - gMC->Gsatt("V0B2","seen",1); - gMC->Gsatt("V0B3","seen",1); - gMC->Gsatt("V0B4","seen",1); + + gMC->Gsatt("V0RI","seen",0); - gMC->Gsatt("V0C1","seen",1); - gMC->Gsatt("V0C2","seen",1); - gMC->Gsatt("V0C3","seen",1); - gMC->Gsatt("V0C4","seen",1); - - gMC->Gsatt("V0D1","seen",1); - gMC->Gsatt("V0D2","seen",1); - gMC->Gsatt("V0D3","seen",1); - gMC->Gsatt("V0D4","seen",1); + gMC->Gsatt("V0CA","seen",1); + gMC->Gsatt("V0IR","seen",1); + gMC->Gsatt("V0ER","seen",1); - gMC->Gsatt("V0E1","seen",1); - gMC->Gsatt("V0E2","seen",1); - gMC->Gsatt("V0E3","seen",1); - gMC->Gsatt("V0E4","seen",1); - + gMC->Gsatt("V0R0","seen",0); + gMC->Gsatt("V0R1","seen",1); + gMC->Gsatt("V0R2","seen",1); + gMC->Gsatt("V0R3","seen",1); + gMC->Gsatt("V0R4","seen",1); + gMC->Gsatt("V0R5","seen",1); + gMC->Gsatt("V0R6","seen",1); } diff --git a/VZERO/libVZERO.pkg b/VZERO/libVZERO.pkg index 426158254a6..950f12a60e6 100644 --- a/VZERO/libVZERO.pkg +++ b/VZERO/libVZERO.pkg @@ -1,13 +1,12 @@ SRCS= \ AliVZERO.cxx \ AliVZEROv0.cxx \ +AliVZEROv2.cxx \ AliVZEROhit.cxx \ AliVZEROdigit.cxx -HDRS= \ -AliVZERO.h \ -AliVZEROv0.h \ -AliVZEROhit.h \ -AliVZEROdigit.h +HDRS= $(SRCS:.cxx=.h) -DSRC=VZEROLinkDef.h \ No newline at end of file +DHDR=VZEROLinkDef.h + +EINCLUDE:= TGeant3 STRUCT STEER -- 2.43.0