16 #include "FairGeoTransform.h"
17 #include "FairGeoInterface.h"
18 #include "FairGeoLoader.h"
19 #include "FairGeoNode.h"
20 #include "FairGeoMedium.h"
21 #include "FairGeoInterface.h"
22 #include "FairGeoMedia.h"
24 #include "FairGeoRootBuilder.h"
25 #include "FairRootManager.h"
26 #include "FairVolume.h"
27 #include "FairRuntimeDb.h"
30 #include "TClonesArray.h"
31 #include "TGeoManager.h"
32 #include "TLorentzVector.h"
33 #include "TParticle.h"
34 #include "TVirtualMC.h"
38 #include "TGeoMCGeometry.h"
39 #include "TObjArray.h"
40 #include "TGeoVoxelFinder.h"
41 #include "TGeoMatrix.h"
49 using std::ostringstream;
53 : FairDetector(), fSciTCollection(0)
69 : FairDetector(name, active), fSciTCollection(0)
76 std::cout <<
"ScitTil fGeoH is loading" << std::endl;
79 std::cout <<
"ScitTil fGeoH was loaded but is still NULL" << std::endl;
105 std::cout<<
" -I- Initializing PndSciT()"<<std::endl;
107 std::cout<<
" Fairdetector geht"<<std::endl;
109 FairRun*
sim = FairRun::Instance();
110 FairRuntimeDb*
rtdb=sim->GetRuntimeDb();
113 par->setInputVersion(sim->GetRunId(),1);
117 std::cout<<
" -E- No gGeoManager in PndSciT::Initialize()!"<<std::endl;
124 std::cout<<
" -I- Initialized PndSciT()"<<std::endl;
138 std::cout<<
" -E- No PndGeoHandling loaded."<<std::endl;
143 if ( gMC->IsTrackEntering() )
147 fTime = gMC->TrackTime() * 1.0e09;
149 gMC->TrackPosition(
fPosIn);
150 gMC->TrackMomentum(
fMomIn);
158 if ( (gMC->IsTrackExiting() ||
159 gMC->IsTrackStop() ||
160 gMC->IsTrackDisappeared() ))
162 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
196 if (fVerboseLevel)
Print();
204 FairRootManager::Instance()->Register(
"SciTPoint",
"PndSciT",
fSciTCollection, kTRUE);
222 cout <<
"-I- PndSciT: " << nHits <<
" points registered in this event."
245 Int_t nEntries = cl1->GetEntriesFast();
247 TClonesArray& clref = *cl2;
249 for (Int_t
i=0;
i<nEntries;
i++) {
251 Int_t index = oldpoint->GetTrackID() +
offset;
252 oldpoint->SetTrackID(index);
256 cout <<
" -I- PndSciT: " << cl2->GetEntriesFast() <<
" merged entries."
263 TString fileName=GetGeometryFileName();
265 if(fileName.EndsWith(
".root")){
266 ConstructRootGeometry();
268 cout<<
" geometry format not supported"<<endl;}
287 TVector3
pos, TVector3
mom,
294 Int_t size = clref.GetEntriesFast();
295 return new(clref[size])
PndSciTPoint( eventID, trackID, sensorID, detName,pos, mom,
297 time, length, eLoss);
Int_t fPosIndex
for saving parameters, although not mandatory, may someone can make use out of the stored parameters ...
virtual void Print() const
sim(Int_t nEvents=1, TString SimEngine="TGeant4", Float_t mom=6.231552)
virtual void Initialize()
void CreateUniqueSensorId(TString startName, std::vector< std::string > listOfSensitives)
Has to be called during simulation to create unique sensor id.
virtual TClonesArray * GetCollection(Int_t iColl) const
TGeoManager * gGeoManager
void AddPoint(DetectorId iDet)
virtual void EndOfEvent()
virtual void BeginEvent()
Int_t GetShortID(TString path)
for a given path the (unique) position of the sensor path in the fSensorNamePar-List is given...
static PndGeoHandling * Instance()
virtual Bool_t ProcessHits(FairVolume *vol=0)
std::vector< std::string > fListOfSensitives
virtual void ConstructGeometry()
virtual void CopyClones(TClonesArray *cl1, TClonesArray *cl2, Int_t offset)
bool CheckIfSensitive(std::string name)
PndSciTPoint * AddHit(Int_t eventID, Int_t trackID, Int_t sensorID, TString detName, TVector3 posin, TVector3 momin, TVector3 posout, TVector3 momout, Double_t tof, Double_t length, Double_t eLoss)
PndGeoSciTPar * par
Gives Access to the Path info of a hit.
TClonesArray * fSciTCollection