61 if ( gMC->IsTrackEntering() ) {
62 fTime = gMC->TrackTime() * 1.0e09;
64 gMC->TrackPosition(
fPos);
65 gMC->TrackMomentum(
fMom);
66 LOG(DEBUG) <<
"track enters"<<gMC->GetStack()->GetCurrentTrack()->GetPdgCode();
68 if (!gMC->IsTrackEntering() ) {
69 LOG(DEBUG) <<
"track is not entering"<<gMC->GetStack()->GetCurrentTrack()->GetPdgCode();
71 if ( gMC->IsTrackExiting() ||
73 gMC->IsTrackDisappeared() ) {
74 LOG(DEBUG) <<
"track stopped"<<gMC->GetStack()->GetCurrentTrack()->GetPdgCode();
76 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
78 gMC->CurrentVolID(veto_uniqueId);
80 TParticle* p=gMC->GetStack()->GetCurrentTrack();
81 Int_t pdgCode = p->GetPdgCode();
83 gMC->TrackPosition(Pos);
85 gMC->TrackMomentum(Mom);
86 Double_t xmean = (
fPos.X()+Pos.X())/2. ;
87 Double_t ymean = (
fPos.Y()+Pos.Y())/2. ;
88 Double_t zmean = (
fPos.Z()+Pos.Z())/2. ;
91 0.,pdgCode,TVector3(Pos.X(), Pos.Y(), Pos.Z()),TVector3(Mom.Px(), Mom.Py(), Mom.Pz()) );
94 stack->AddPoint(
kVETO);
101 static FairGeoLoader *geoLoad=FairGeoLoader::Instance();
102 static FairGeoInterface *geoFace=geoLoad->getGeoInterface();
103 static FairGeoMedia *media=geoFace->getMedia();
104 static FairGeoBuilder *geoBuild=geoLoad->getGeoBuilder();
106 FairGeoMedium *ShipMedium=media->getMedium(name);
109 Fatal(
"InitMedium",
"Material %s not defined in media file.", name.Data());
110 TGeoMedium* medium=gGeoManager->GetMedium(name);
112 return ShipMedium->getMediumIndex();
113 return geoBuild->createMedium(ShipMedium);
136 Double_t
mm = 0.1*
cm;
138 TGeoVolume *top=gGeoManager->FindVolumeFast(
"Detector");
139 if(!top) LOG(ERROR) <<
"no Detector volume found " ;
144 TGeoMedium *vac = gGeoManager->GetMedium(
"vacuums");
146 TGeoMedium *concrete = gGeoManager->GetMedium(
"Concrete");
149 TGeoVolume* target = gGeoManager->MakeBox(
"Target",TargetMaterial,199.*
cm,199.*
cm,(
fTargetL/2)*
cm);
150 top->AddNode(target, 1,
new TGeoTranslation(0, 0, (
fTargetL/2)*
cm));
152 TGeoVolume *sensPlane = gGeoManager->MakeBox(
"sensPlane",vac,199.*
cm,199.*
cm,1.*
mm);
153 sensPlane->SetLineColor(kGreen);
154 top->AddNode(sensPlane, 13,
new TGeoTranslation(0, 0, (
fTargetL+ 0.11)*
cm));
155 AddSensitiveVolume(sensPlane);
156 AddSensitiveVolume(target);
170 float dx = (x2-x1)/10./2.;
171 float dy = (y2-y1)/10./2.;
172 float dz = (z2-z1)/10./2.;
178 TGeoBBox* box_I =
new TGeoBBox(
"box_I",dx,dy,dz);
179 double origin[3] = {0,d/2,0};
180 TGeoBBox* box_O =
new TGeoBBox(
"box_O",dx+d,dy+d/2.,dz+d,origin);
181 TGeoTube* hole_air =
new TGeoTube(
"hole_air",0.,rAir,dx);
182 TGeoRotation* RF =
new TGeoRotation(
"R_airTube");
183 RF->SetAngles(0.,0.,90.);
184 TGeoCombiTrans* CombiTrans1 =
new TGeoCombiTrans(
"T_AirTube",-dx/2,0,10.,RF);
185 CombiTrans1->RegisterYourself();
186 TGeoCombiTrans* CombiTrans2 =
new TGeoCombiTrans(
"T_CablesDuct",dx/2,0,10.,RF);
187 CombiTrans2->RegisterYourself();
188 TGeoBBox* hole_cables =
new TGeoBBox(
"hole_cables",cablesDx,cablesDy,dx);
189 double floor_thickness = 25.;
190 double originF[3] = {0,-dy-floor_thickness,0};
191 TGeoBBox* floor =
new TGeoBBox(
"floor",1.5*dx,floor_thickness,1.5*dz,originF);
192 TGeoCompositeShape* box =
new TGeoCompositeShape(
"box",
"box_O-box_I-hole_air:T_AirTube-hole_cables:T_CablesDuct");
193 TGeoVolume *volBox =
new TGeoVolume(
"vbox",box,TargetMaterial);
194 TGeoVolume *volFloor =
new TGeoVolume(
"vfloor",floor,concrete);
195 TGeoVolume *sensBox =
new TGeoVolume(
"sensBox",box_I,vac);
196 sensBox->SetLineColor(kGreen);
197 top->AddNode(sensBox, 13);
198 AddSensitiveVolume(sensBox);
199 top->AddNode(volBox, 1);
200 AddSensitiveVolume(volBox);
201 top->AddNode(volFloor, 2);
207 TVector3 pos, TVector3 mom,
208 Double_t time, Double_t length,
209 Double_t eLoss, Int_t pdgCode,TVector3 Lpos, TVector3 Lmom)
212 Int_t size = clref.GetEntriesFast();
213 return new(clref[size])
vetoPoint(trackID, detID, pos, mom,
214 time, length, eLoss, pdgCode,Lpos,Lmom);
vetoPoint * AddHit(Int_t trackID, Int_t detID, TVector3 pos, TVector3 mom, Double_t time, Double_t length, Double_t eLoss, Int_t pdgcode, TVector3 Lpos, TVector3 Lmom)