#include <Riostream.h>
#include <stdlib.h>
-#include <TGeometry.h>
-#include <TLorentzVector.h>
-#include <TMath.h>
-#include <TNode.h>
-#include <TTUBE.h>
-#include <TVirtualMC.h>
+#include "TGeoCompositeShape.h"
#include "TGeoManager.h"
#include "TGeoMatrix.h"
#include "TGeoPcon.h"
#include "TGeoTube.h"
-#include "TGeoCompositeShape.h"
+#include <TGeoGlobalMagField.h>
#include <TGraph.h>
+#include <TLorentzVector.h>
+#include <TMath.h>
+#include <TVirtualMC.h>
#include "AliLog.h"
#include "AliMagF.h"
#include "AliCDBStorage.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
+#include "AliTrackReference.h"
ClassImp(AliT0v1)
//C T0 mother volume
Float_t pstartR[18]={0., 360., 5.,
-6.8, 4.25, 10., //-76.5+0.00+69.7
- -0.75 , 4.45, 10., // -76.5+6.05+69.7
- 1.25 , 4.45, 10., //-76.5+8.05+69.7
- 1.25 , 5.1, 10., //-76.5+8.05+69.7
+ // -0.75 , 4.45, 10., // -76.5+6.05+69.7
+ // 1.25 , 4.45, 10., //-76.5+8.05+69.7
+ -0.75 , 4.5, 10., // -76.5+6.05+69.7
+ 1.25 , 4.5, 10., //-76.5+8.05+69.7
+ 1.25 , 5.1, 10, //-76.5+8.05+69.7
6.8 , 5.1, 10.}; //-62.9+0.00+69.7
Float_t pstart[3]={4., 12.5,6.8};
- Float_t pinstart[3]={0.,1.51,6.5};
- Float_t ppmt[3]={0.,1.5,3.5};
+ Float_t pinstart[3]={0.,1.45,6.5};
+ Float_t ppmt[3]={0.,1.4,3.5};
Float_t ptop[3]={0.,1.,1.0};
Float_t preg[3]={0., 1.0, 0.005}; //photcathode dobavil bogdanov
Float_t ptopout[3]={1.,1.01, 1.}; //metal air around raiator for photos reflection
Float_t pglass[3]={1.2,1.3,2.};
Float_t pcer[3]={0.9,1.1,1.35};
Float_t psteel[3]={0.9,1.1,0.15};
- Float_t psupport1[3] = {4.49,4.5,4.0};//C kozhuh vnutri
+ Float_t psupport1[3] = {4.51,4.52,4.0};//C kozhuh vnutri
Float_t psupport2[3] = {9.5,9.6,4.0};// snaruzhi C
- Float_t psupport3[3] = {4.51,9.5, 0.05};//kryshki C
- Float_t psupport5[3] = {1.5,1.5004,6.5}; // stakanchik dlai feu C
+ Float_t psupport3[3] = {4.52,9.5, 0.05};//kryshki C
+ Float_t psupport5[3] = {1.44,1.45,6.5}; // stakanchik dlai feu C
Float_t psupport6[3] = {0,1.4,0.04}; //kryshechka stakanchika Al
- Float_t psupport7[3] = {1.5004,1.51,0.4}; //kolechko snaruzhu stakanchika Al
+ Float_t psupport7[3] = {1.44,1.45,0.4}; //kolechko snaruzhu stakanchika Al
// Mother Volume katushka dlia krepezha vokrug truby k Absorbru
AliMatrix(idrotm[901], 90., 0., 90., 90., 180., 0.);
// 14
- ppcon[39] = 19.91;
+ ppcon[39] = 19.99;
ppcon[40] = 3.15;
ppcon[41] = 7.6;
gMC->Gspos("0SU7",1,"0INS",0,0,z,0,"ONLY"); //Al kryshechka
z=pinstart[2]-psupport7[2];
- gMC->Gspos("0SU8",1,"0INS",0,0,z,0,"ONLY"); //Al kolechko
+ gMC->Gspos("0SU8",1,"0SU6",0,0,z,0,"ONLY"); //Al kolechko
Float_t par[3];
par[0]=3.15;
par[1]=4.9;
- par[2]=0.1/2;
+ par[2]=0.01/2;
+
gMC->Gsvolu("0SA1","TUBE",idtmed[kAl],par,3);
- z += par[2];
+ z += par[2];
+ // z -= par[2];
gMC->Gspos("0SA1",1,"0SUP",0,0,z,0,"ONLY");
z=z+par[2];
par[0]=3.15;
gMC->Gspos("0SA2",1,"0SUP",0,0,z,0,"ONLY");
z=z+par[2];
par[0]=3.16; // eta chast' prikruchena k absorberu
- par[1]=7.5;
- par[2]=0.1;
+ par[1]=7.4;
+ par[2]=0.01;
gMC->Gsvolu("0SA3","TUBE",idtmed[kAl],par,3);
- z += par[2];
+ // z += par[2];
+ z = ppcon[39] - par[2];
gMC->Gspos("0SA3",1,"0SUP",0,0,z,0,"ONLY");
par[0]=3.16; // gvozdi eta chast' prikruchena k absorberu
- par[1]=7.5;
+ par[1]=7.4;
par[2]=0.01;
gMC->Gsvolu("0SN2","TUBE",idtmed[kSteel],par,3);
gMC->Gspos("0SN2",1,"0SUP",0,0,z,0,"MANY");
AliFatal(Form("Alignable entry %s not created. Volume path %s not valid",
symName.Data(),volPath.Data()));
}
- /*
- for (Int_t imod=0; imod<24; imod++)
- {
- if (imod < 12)
- { volPath = vpC; sn="T0/C/PMT";}
- else
- { volPath = vpA; sn="T0/A/PMT";}
- volPath += imod+1;
- volPath += vpInside;
- symName = sn;
- symName += imod+1;
-
-
- AliDebug(2,"--------------------------------------------");
- AliDebug(2,Form("Alignable object %d", imod));
- AliDebug(2,Form("volPath=%s\n",volPath.Data()));
- AliDebug(2,Form("symName=%s\n",symName.Data()));
- AliDebug(2,"--------------------------------------------");
- if(!gGeoManager->SetAlignableEntry(symName.Data(),volPath.Data()))
- AliFatal(Form("Alignable entry %s not created. Volume path %s not valid",
-symName.Data(),volPath.Data()));
- }
- */
}
//------------------------------------------------------------------------
void AliT0v1::CreateMaterials()
{
- Int_t isxfld = gAlice->Field()->Integ();
- Float_t sxmgmx = gAlice->Field()->Max();
+ Int_t isxfld = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+ Float_t sxmgmx = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
// Float_t a,z,d,radl,absl,buf[1];
// Int_t nbuf;
// AIR
static Float_t hits[6];
static Int_t vol[2];
TLorentzVector pos;
+ TLorentzVector mom;
// TClonesArray &lhits = *fHits;
if(!gMC->IsTrackAlive()) return; // particle has disappeared
+ id=gMC->CurrentVolID(copy);
- // If particles is photon then ...
-
- if (gMC->TrackPid() == 50000050)
- {
- id=gMC->CurrentVolID(copy);
+ // Check the sensetive volume
+ if(id==fIdSens1 ) {
+ if(gMC->IsTrackEntering()) {
+ gMC->CurrentVolOffID(2,copy);
+ vol[1]=copy;
+ gMC->CurrentVolOffID(3,copy1);
+ vol[0]=copy1;
+ gMC->TrackPosition(pos);
+ hits[0] = pos[0];
+ hits[1] = pos[1];
+ hits[2] = pos[2];
+ if(pos[2]<0) vol[0] = 2;
+ if(pos[2]>=0) vol[0] = 1;
+ Float_t etot=gMC->Etot();
+ hits[3]=etot;
+ Int_t iPart= gMC->TrackPid();
+ Int_t partID=gMC->IdFromPDG(iPart);
+ hits[4]=partID;
+ Float_t ttime=gMC->TrackTime();
+ hits[5]=ttime*1e12;
+ if (gMC->TrackPid() == 50000050) // If particles is photon then ...
+ {
+ if(RegisterPhotoE(vol[1]-1,hits[3])) {
+ AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),vol,hits);
+ // Create a track reference at the exit of photocatode
+ }
+ }
+
+ //charge particle
+ if ( gMC->TrackCharge() )
+ AddTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber(), AliTrackReference::kT0);
- // Check the sensetive volume
- if(id==fIdSens1 ) {
- if(gMC->IsTrackEntering()) {
- gMC->CurrentVolOffID(2,copy);
- vol[1]=copy;
- gMC->CurrentVolOffID(3,copy1);
- vol[0]=copy1;
- gMC->TrackPosition(pos);
- hits[0] = pos[0];
- hits[1] = pos[1];
- hits[2] = pos[2];
- if(pos[2]<0) vol[0]=2;
- if(pos[2]>=0) vol[0]=1;
-
- Float_t etot=gMC->Etot();
- hits[3]=etot;
- Int_t iPart= gMC->TrackPid();
- Int_t partID=gMC->IdFromPDG(iPart);
- hits[4]=partID;
- Float_t ttime=gMC->TrackTime();
- hits[5]=ttime*1e12;
- if(RegisterPhotoE(vol[1]-1,hits[3]))
- AddHit(fIshunt,vol,hits);
-
- }
- // cout<< gAlice->GetMCApp()->GetCurrentTrackNumber()<<" hit added "<<endl;
-
/*
printf("track(%i) alive(%i) disap(%i) enter(%i) exit(%i) inside(%i) out(%i) stop(%i) new(%i) \n",
gAlice->GetMCApp()->GetCurrentTrackNumber(),
gMC->IsTrackOut(),
gMC->IsTrackStop(),
gMC->IsNewTrack());
- */
- } //sensitive
- } //photon
+ */
+ }// trck entering
+ } //sensitive
+
}