]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RICH/AliRICHv0.cxx
Bug Correction
[u/mrichter/AliRoot.git] / RICH / AliRICHv0.cxx
CommitLineData
53fd478b 1//**************************************************************************
2// Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3// *
4// Author: The ALICE Off-line Project. *
5// Contributors are mentioned in the code where appropriate. *
6// *
7// Permission to use, copy, modify and distribute this software and its *
8// documentation strictly for non-commercial purposes is hereby granted *
9// without fee, provided that the above copyright notice appears in all *
10// copies and that both the copyright notice and this permission notice *
11// appear in the supporting documentation. The authors make no claims *
12// about the suitability of this software for any purpose. It is *
13// provided "as is" without express or implied warranty. *
14//**************************************************************************
4c039060 15
88cb7938 16#include "AliRICHv0.h"
53fd478b 17#include "AliRICHChamber.h"
18#include <AliRun.h>
19#include <AliMC.h>
c021cb15 20#include <TVirtualMC.h>
21#include <TPDGCode.h>
c021cb15 22#include <TLorentzVector.h>
53fd478b 23#include <TMath.h>
ddae0931 24
e42a7b46 25#include <TGeoManager.h>
26
ddae0931 27ClassImp(AliRICHv0)
fbeabb4b 28
e14b8113 29void AliRICHv0::StepManager()
fbeabb4b 30{
53fd478b 31//This StepManager is a provision for different test-learn activities on the current MC layer
8e8eae84 32 const char *sParticle;
c021cb15 33 switch(gMC->TrackPid()){
34 case kProton:
c60862bf 35 sParticle="proton";break;
c021cb15 36 case kNeutron:
c60862bf 37 sParticle="neutron";break;
c021cb15 38 case kGamma:
39 sParticle="gamma";break;
fbeabb4b 40 case kCerenkov:
c021cb15 41 sParticle="photon";break;
fbeabb4b 42 case kPi0:
43 sParticle="Pi0";break;
c60862bf 44 case kElectron:
45 sParticle="electron";break;
c021cb15 46 default:
47 sParticle="not known";break;
48 }
49
ed3ceb24 50 Info("","event=%i hunt=%i tid=%i pid=%i(%s) m=%f q=%3.1f dEdX=%9.3f",
fbeabb4b 51 gMC->CurrentEvent(),
52 fIshunt,
5d12ce38 53 gAlice->GetMCApp()->GetCurrentTrackNumber(),
fbeabb4b 54 gMC->TrackPid(),
55 sParticle,
56 gMC->TrackMass(),
ed3ceb24 57 gMC->TrackCharge(),
58 gMC->Edep());
fbeabb4b 59 Info("","Flags:alive(%i) disap(%i) enter(%i) exit(%i) inside(%i) out(%i) stop(%i) new(%i)",
c021cb15 60 gMC->IsTrackAlive(),
fbeabb4b 61 gMC->IsTrackDisappeared(),
62 gMC->IsTrackEntering(),
63 gMC->IsTrackExiting(),
64 gMC->IsTrackInside(),
65 gMC->IsTrackOut(),
66 gMC->IsTrackStop(),
67 gMC->IsNewTrack());
68 Int_t copy0,copy1,copy2,copy3;
69 Int_t vid0=gMC->CurrentVolID(copy0);
70 Int_t vid1=gMC->CurrentVolOffID(1,copy1);
71 Int_t vid2=gMC->CurrentVolOffID(2,copy2);
72 Int_t vid3=gMC->CurrentVolOffID(3,copy3);
73 Info("","vid0=%i(%s)c%i vid1=%i(%s)c%i vid2=%i(%s)c%i vid3=%i(%s)c%i %s-%s-%s-%s",
74 vid0,gMC->VolName(vid0),copy0,
75 vid1,gMC->VolName(vid1),copy1,
76 vid2,gMC->VolName(vid2),copy2,
77 vid3,gMC->VolName(vid3),copy3,
78 gMC->CurrentVolName(),
79 gMC->CurrentVolOffName(1),
80 gMC->CurrentVolOffName(2),
81 gMC->CurrentVolOffName(3));
82
83 Float_t a,z,den,rad,abs; a=z=den=rad=abs=kBad;
84 Int_t mid=gMC->CurrentMaterial(a,z,den,rad,abs);
85 Info("","mid=%i a=%7.2f z=%7.2f den=%7.2f rad=%7.2f abs=%7.2f",mid,a,z,den,rad,abs);
86
c021cb15 87 TLorentzVector x4;
88 gMC->TrackPosition(x4);
fbeabb4b 89 Float_t glo[3],loc[3];
90 glo[0]=x4.X();glo[1]=x4.Y();glo[2]=x4.Z();
91 gMC->Gmtod(glo,loc,1);
9e23b054 92 Info("","glo(%+8.3f,%+8.3f,%+8.3f) r=%8.3f theta=%8.3f phi=%8.3f",
53fd478b 93 glo[0],glo[1],glo[2],x4.Rho(),x4.Theta()*TMath::RadToDeg(),x4.Phi()*TMath::RadToDeg());
c60862bf 94 Info("","loc(%+8.3f,%+8.3f,%8.3f) by gMC->Gmtod()", loc[0],loc[1],loc[2]);
95 if(gMC->VolId("CSI ")==gMC->CurrentVolID(copy0)){
96 Int_t iChamber;
97 gMC->CurrentVolOffID(2,iChamber);
3582c1f9 98 TVector2 x2=C(iChamber)->Glob2Loc(x4);
e42a7b46 99 Info("","loc(%+8.3f,%+8.3f) by Glob2Loc", x2.X(),x2.Y());
c60862bf 100 }
101 Info("","end of current step\n");
53fd478b 102}//StepManager()
e42a7b46 103
104void AliRICHv0::CreateGeometry()
105{
106 if(GetDebug())Info("CreateGeometry","Start v0.");
107
108 Double_t cm=1,mm=0.1;
109 //place radioactive source compartment if needed
110 Double_t containerLen=21.8*mm/2 ,containerR=38*mm/2;
111 Double_t screwLen=15*mm/2 ,screwR=5*mm/2;
112 Double_t srcLen=10*mm/2 ,srcR=2*mm/2;
113 Double_t perpexLen=20*mm/2 ,perpexR=34*mm/2;
114 Double_t perpexWholeLen=10*mm/2 ,perpexWholeR=4*mm/2;
115 Double_t alBottomLen=containerLen-perpexLen ,alWholeR=5*mm/2;
116//volumes
117 Double_t par[3];
118
119// Double_t anodWireD=20*mkm, cathWireD=100*mkm, collWireD=100*mkm;
120
121 Double_t pcZ2=0.5*mm;
122 par[0]=68.8*cm; par[1]=70.86*cm; par[2]=13*cm; gMC->Gsvolu("RICH","BOX ",(*fIdtmed)[kCH4],par,3); //RICH
123 par[0]=P()->PcSizeX()/2; par[1]=P()->PcSizeY()/2; par[2]=pcZ2; gMC->Gsvolu("CSI ","BOX ",(*fIdtmed)[kCSI],par,3); //CSI
124 par[0]=P()->PcSizeX()/2; par[1]=P()->PcSizeY()/2; par[2]=P()->GapAmp(); gMC->Gsvolu("GAP ","BOX ",(*fIdtmed)[kCH4],par,3); //GAP
125// par[0]=0; par[1]=; par[2]=P()->PcSizeX()/2;gMC->Gsvolu("WIAN","TUBE",(*fIdtmed)[kW],par,3);//Anod wire
126// par[0]=0; par[1]=srcR; par[2]=P()->PcSizeX()/2;gMC->Gsvolu("WICA","TUBE",(*fIdtmed)[kCu],par,3);//Cathod wire
127// par[0]=0; par[1]=srcR; par[2]=P()->PcSizeX()/2;gMC->Gsvolu("WICO","TUBE",(*fIdtmed)[kCu],par,3);//Collect wire
128
129 par[0]=0 ;par[1]=containerR ;par[2]=containerLen; gMC->Gsvolu("CONT","TUBE",(*fIdtmed)[kCH4] ,par,3); //container
130 par[0]=perpexR;par[1]=containerR ;par[2]=containerLen; gMC->Gsvolu("ALWA","TUBE",(*fIdtmed)[kAl] ,par,3); //Al cylindric wall
131 par[0]=0 ;par[1]=perpexR ;par[2]=alBottomLen; gMC->Gsvolu("ALBO","TUBE",(*fIdtmed)[kAl] ,par,3); //Al bottom
132 par[0]=0 ;par[1]=alWholeR ;par[2]=alBottomLen; gMC->Gsvolu("ALWH","TUBE",(*fIdtmed)[kCH4] ,par,3); //Whole in Al bottom
133 par[0]=0 ;par[1]=perpexR ;par[2]=perpexLen; gMC->Gsvolu("PEPL","TUBE",(*fIdtmed)[kPerpex],par,3); //Perpex plug
134 par[0]=0 ;par[1]=perpexWholeR;par[2]=perpexWholeLen;gMC->Gsvolu("PEWH","TUBE",(*fIdtmed)[kCH4] ,par,3); //Whole in Perpex
135 par[0]=0 ;par[1]=screwR ;par[2]=screwLen; gMC->Gsvolu("SCRE","TUBE",(*fIdtmed)[kSteel] ,par,3); //Screw
136 par[0]=0 ;par[1]=srcR ;par[2]=srcLen; gMC->Gsvolu("SOUR","TUBE",(*fIdtmed)[kSteel] ,par,3); //Source itself
137//nodes
138 gMC->Gspos("RICH",1,"ALIC",0,0,-9 ,0,"ONLY"); //RICH in ALIC
139 gMC->Gspos("CSI ",1,"RICH",0,0,-(P()->GapProx()+pcZ2) ,0,"ONLY"); //CsI in ALIC
140 gMC->Gspos("GAP ",1,"RICH",0,0,-(P()->GapProx()-P()->GapAmp()/2),0,"ONLY"); //GAP in ALIC
141
142 gMC->Gspos("CONT",1,"RICH",0,0,1*cm ,0,"ONLY"); //Sr90 container in RICH
143 gMC->Gspos("ALWA",1,"CONT",0,0,0 ,0,"ONLY"); //Al wall
144 gMC->Gspos("ALBO",1,"CONT",0,0,-containerLen+alBottomLen ,0,"ONLY"); //Al bottom
145 gMC->Gspos("PEPL",1,"CONT",0,0,containerLen-perpexLen ,0,"ONLY"); //Perpex plug
146
147 gMC->Gspos("ALWH",1,"ALBO",6*mm,0,0 ,0,"ONLY"); //Whole in Al bottom
148
149 gMC->Gspos("PEWH",1,"PEPL",6*mm,0,-perpexLen+perpexWholeLen ,0,"ONLY"); //Whole in Perpex plug
150 gMC->Gspos("SOUR",1,"PEPL",6*mm,0, perpexLen-srcLen ,0,"ONLY"); //Source in Perpex plug
151 gMC->Gspos("SCRE",1,"PEPL",0,0,perpexLen-screwLen ,0,"ONLY"); //Screw in Perpex plug
152 if(GetDebug())Info("CreateGeometry","Stop v0.");
153}//CreateGeometry()