-
Notifications
You must be signed in to change notification settings - Fork 117
run_simPythia.py output
I will try to submit my findings on the output of 'run_simPythia.py' which is located in '.../ShipSoft/FairShip/macro' here. Please help to improve this collection in order to help newcomers get along!
The script produces 4 .root files:
1. FairRunInfo_ship.Pythia8-TGeant4.root
which contains information (TH1) about the running process (Memory vs. Event, Memory vs. Time, Time per Event, Time vs. Event)
2. geofile_full.Pythia8-TGeant4.root
containing a TGeoManager. Not really clear what this is helpful for (freely adapted from Thomas).
3. ship.params.Pythia8-TGeant4.root
Not clear at all what this is helpful for (freely adapted from Thomas)
4. ship.Pythia8-TGeant4.root
which contains the Event and detector information!
Here the KEYs for the file:
KEY: TFolder cbmroot;1 Main Folder
KEY: TList BranchList;1 Doubly linked list
KEY: FairFileHeader FileHeader;1
KEY: TTree cbmsim;1 /cbmroot
I only see the sense in the TTree, consisting of a long list of Branches
TTree cbmsim BranchList
MCTrack: Int_t cbmroot.Stack.MCTrack_
MCTrack.fUniqueID: UInt_t fUniqueID[cbmroot.Stack.MCTrack_]
MCTrack.fBits: UInt_t fBits[cbmroot.Stack.MCTrack_]
MCTrack.fPdgCode: Int_t fPdgCode[cbmroot.Stack.MCTrack_]
MCTrack.fMotherId: Int_t fMotherId[cbmroot.Stack.MCTrack_]
MCTrack.fPx: Double32_t fPx[cbmroot.Stack.MCTrack_]
MCTrack.fPy: Double32_t fPy[cbmroot.Stack.MCTrack_]
MCTrack.fPz: Double32_t fPz[cbmroot.Stack.MCTrack_]
MCTrack.fStartX: Double32_t fStartX[cbmroot.Stack.MCTrack_]
MCTrack.fStartY: Double32_t fStartY[cbmroot.Stack.MCTrack_]
MCTrack.fStartZ: Double32_t fStartZ[cbmroot.Stack.MCTrack_]
MCTrack.fStartT: Double32_t fStartT[cbmroot.Stack.MCTrack_]
MCTrack.fNPoints: Int_t fNPoints[cbmroot.Stack.MCTrack_]
XXX as vetoPoint, EcalPoint, EcalPointLite, MounPoint:
XXX: Int_t cbmroot.veto.vetoPoint_
XXX.fUniqueID: UInt_t fUniqueID[cbmroot.veto.vetoPoint_]
XXX.fBits: UInt_t fBits[cbmroot.veto.vetoPoint_]
XXX.fLinks: set fLinks[cbmroot.veto.vetoPoint_]
XXX.fTrackID: Int_t fTrackID[cbmroot.veto.vetoPoint_]
XXX.fEventId: UInt_t fEventId[cbmroot.veto.vetoPoint_]
XXX.fPx: Double32_t fPx[cbmroot.veto.vetoPoint_]
XXX.fPy: Double32_t fPy[cbmroot.veto.vetoPoint_]
XXX.fPz: Double32_t fPz[cbmroot.veto.vetoPoint_]
XXX.fTime: Double32_t fTime[cbmroot.veto.vetoPoint_]
XXX.fLength: Double32_t fLength[cbmroot.veto.vetoPoint_]
XXX.fELoss: Double32_t fELoss[cbmroot.veto.vetoPoint_]
XXX.fDetectorID: Int_t fDetectorID[cbmroot.veto.vetoPoint_]
XXX.fX: Double32_t fX[cbmroot.veto.vetoPoint_]
XXX.fY: Double32_t fY[cbmroot.veto.vetoPoint_]
XXX.fZ: Double32_t fZ[cbmroot.veto.vetoPoint_]
MCEventHeader.: cbmroot.Event.MCEventHeader.
MCEventHeader.TNamed.fUniqueID: UInt_t cbmroot.Event.MCEventHeader.TNamed.fUniqueID
MCEventHeader.TNamed.fBits: UInt_t cbmroot.Event.MCEventHeader.TNamed.fBits
MCEventHeader.TNamed.fName: TString cbmroot.Event.MCEventHeader.TNamed.fName
MCEventHeader.TNamed.fTitle: TString cbmroot.Event.MCEventHeader.TNamed.fTitle
MCEventHeader.fRunId: UInt_t cbmroot.Event.MCEventHeader.fRunId
MCEventHeader.fEventId: UInt_t cbmroot.Event.MCEventHeader.fEventId
MCEventHeader.fX: Double32_t cbmroot.Event.MCEventHeader.fX
MCEventHeader.fY: Double32_t cbmroot.Event.MCEventHeader.fY
MCEventHeader.fZ: Double32_t cbmroot.Event.MCEventHeader.fZ
MCEventHeader.fT: Double32_t cbmroot.Event.MCEventHeader.fT
MCEventHeader.fB: Double32_t cbmroot.Event.MCEventHeader.fB
MCEventHeader.fNPrim: Int_t cbmroot.Event.MCEventHeader.fNPrim
MCEventHeader.fIsSet: Bool_t cbmroot.Event.MCEventHeader.fIsSet
MCEventHeader.fRotX: Double32_t cbmroot.Event.MCEventHeader.fRotX
MCEventHeader.fRotY: Double32_t cbmroot.Event.MCEventHeader.fRotY
MCEventHeader.fRotZ: Double32_t cbmroot.Event.MCEventHeader.fRotZ
GeoTracks: Int_t cbmroot.MCGeoTrack.GeoTracks_
GeoTracks.fUniqueID: UInt_t fUniqueID[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fBits: UInt_t fBits[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fGeoAtt: UInt_t fGeoAtt[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fLineColor: Short_t fLineColor[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fLineStyle: Short_t fLineStyle[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fLineWidth: Short_t fLineWidth[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fMarkerColor: Short_t fMarkerColor[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fMarkerStyle: Short_t fMarkerStyle[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fMarkerSize: Float_t fMarkerSize[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fPDG: Int_t fPDG[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fId: Int_t fId[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fParent: TVirtualGeoTrack* fParent[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fParticle: TObject* fParticle[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fTracks: TObjArray* fTracks[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fPointsSize: Int_t fPointsSize[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fNpoints: Int_t fNpoints[cbmroot.MCGeoTrack.GeoTracks_]
GeoTracks.fPoints: Double_t fPoints[cbmroot.MCGeoTrack.GeoTracks_]
Basically MC information, Geo information (not clear yet, I guess for eventDisplay, colors and stuff), MCEventHeader (not clear yet) and numerous variables for each detector component defined in the .../ShipSoft/FairShip directory. Most of these are arrays in which each entry represents a particle hit. The Tree entries represent one MC event each.
**Units: GeV, cm, ns**
a) number of particles that hit the component during that event b) UniqueID (no idea, seems to be set to 0) c) Bits (no idea, all the same value, so maybe memory usage per event?) d) Links (no idea) h) TrackID (link to MC truth info, this is only stored if particles have energy above cut (100MeV), otherwise -2) i) EventId (no idea, seems to be set to 0) j,k,l) Px, Py, Pz: momentum component when detector is hit [GeV] m) Time evolved since decay of N particle [ns] n) Length: flight distance since partice production [cm] o) ELoss : enegry deposit in detector component [GeV] p) DetectorID q,r,s) X,Y,Z : point where detector is hit
The only meaningful variables in EcalPointLite are TrackID, DetID, ELoss, Time. Since the implemented ECAL is broken up into many cells, information on particle momenta and ECAL entrance coordinates is stored in EcalPoint instead in order to minimize the amount of output data. The Eloss variable in EcalPoint gives the particle's energy instead of its energy loss, which is stored in EcalPointLite for each cell. EcalPoint stores information of all particles that pass through the component, not only of particles that interact.
For now the basic detector as in the figure below is implemented: Z axis along beam axis Z = 0 where the Decay volume starts Z = -9900 -> target (for passive shielding) X = Y = 0 -> on beam axis T = 0 -> decay of sterile neutrino N
(The following changed slightly since I started writing this: ) The 'vetoPoint' Branches contain the veto and all 4 tracking chambers (Z = -2390, 1510, 1710, 2150, 2370, Detector ID 16-19, 23-26, 29-32, 35-38, 41-44) with width of 20 each. Each of these areas consists of 4 layers, so a particle going through on all will leave 20 entries in the vetoPoint branches;
'muonPoint' (green in figure) (Z between 2480 and 2520, DetectorID 45);
'ecalPoint' (magenta in figure) (Z between 2400 and 2480, DetectorID 46);
Watch out for changing DetectorIDs when changing the detector setup. When implementing new components (or similar) this might influence the allocation of DetID.