Basic¶
####
options :
# should getters / setters be prefixed with get / set?
getSyntax: True
# should POD members be exposed with getters/setters in classes that have them as members?
exposePODMembers: False
includeSubfolder: True # add folder name when #include headers
components:
# A component is a POD designed to be embedded in another POD,
# Components cannot be stored in a collection
edm::Vector3f:
Members:
- float x
- float y
- float z
ExtraCode:
declaration: "
Vector3f() = default;\n
Vector3f(float xx, float yy, float zz): x(xx),y(yy),z(zz) {}\n
/// enable to construct from array interface \n
template<typename T> Vector3f(const T* v): x(v[0]),y(v[1]),z(v[2]) {}\n
/// enable to construct from G4ThreeVector or TVector3 or other 3-vector classes \n
template<class T> Vector3f(T const& other): x(other.x()), y(other.y()), z(other.z()) {} \n
/// comparison op \n
bool operator==(const Vector3f& v) const { return (x==v.x && y==v.y && z==v.z); }\n
/// array-like interface \n
float operator[](unsigned i) const { return *( &x + i ) ; }\n
float& operator[](unsigned i) { return *( &x + i ) ; }\n
/// raw array interface \n
operator float const* () const { return &x; }\n
/// TODO: need a way to construct other 3-vector types...\n
/// e.g. G4ThreeVector(CLHEP::Hep3Vector) can only construct from x,y,z numbers\n
/// TVector3 accepts double*, but XYZVector need object with x() y() z() ...\n
"
General¶
Event Information¶
####
<!--
# Datatypes are components that can be stored in a Collection
-->
datatypes :
edm::MCEvent:
Description: "info dedicated for simulation"
Author: "Z.Tang"
Members:
- int randomSeed // the random seed for this event
- int status // reserved for status bits
edm::Event:
Description: "event info"
Author: "Z.Tang"
Members :
- int run // run id
- int event // event id in the run
- int localtime // reserved for DAQ computer local time in seconds from 2020-1-1
- double utc // reserved for UTC time from DAQ computer or offline
MC Particles¶
Infomation about simulated particles
pdgid, trackid, parentid (int)
position (float*3)
momentum (float*3)
time (float) (charge, mass, …) (short)
yaml code:
####
edm::MCParticle:
Description: "MC particle"
Author: "Z.Tang"
Members:
- int pdgID // PDG code of the particle
- int trackID // index of the particle
- int parentID // index of parent particle
- edm::Vector3f momentum // particle 3-momentum in [GeV]
- edm::Vector3f vertex // production vertex of the particle in [cm].
- short charge // atomic charge
- uint16_t mass // atomic mass, 0 for e+ e-
- float time // creation time of the particle in [ns] w.r.t. the event
- uint32_t simstat // (opt) status of the particle from the simulation
CALO Simulation Hit (cell)¶
cell id (ushort*3)
edep in cell (float)
cog in cell (float*3)
time (float)
fraction of EM shower (ushort)
fraction of backsplash (ushort)
yaml code:
####
edm::CaloSimCell:
Description: "MC truth info in calo cell"
Author: "Z.Tang"
Members:
# unsigned char not supported... not sure if we shall use char
- short ix // X index of the cell
- short iy // Y index of the cell
- short iz // Z index of the cell
- float edep // energy of the hit in [GeV].
- uint16_t fracEM // int(frac*65535)
- uint16_t fracBS // both, int(em*255) | int(h*255)<<8
- edm::Vector3f pos // CoG of the hits in the cell in [cm]
- edm::Vector3f localpos // as above, in local coo [cm]
- float tfirst // first hit time in the cell [ns] (or t0?)
- float tmean // mean time of hits in the cell [ns]
- float tsigma // sigma of times of hits in the cell [ns]
MutableExtraCode:
declaration: "
void setCellIndex(short x, short y, short z){ setIx(x);setIy(y);setIz(z); }
"
Tracking Simulation Hit (step)¶
cell id (int)
pdgid (int)
edep of the step (float)
local position (float)
local direction (float)
pathlength (float) yaml code:
####
edm::TrackingSimHit:
Description: "Simulated tracking hit, record individual truth step in cells"
Author: "Z.Tang"
Members:
- unsigned int cellCode // encoded cell numbering, e.g. sth like 10000*ilayer+100*iladder+isensor
- float time // incident time of the hit [ns].
- edm::Vector3f pos // the hit position in [cm].
- edm::Vector3f localpos // the local step start position in [cm].
- edm::Vector3f localend // the local step ending position in [cm].
- float pathlen // path length of the hit(track) in the sensitive material [cm]
- float edep // energy deposited in the hit [GeV].
- edm::Vector3f momentum // the 3-momentum of the particle at the hit position in [GeV]
- int trackID // the track ID of the particle which resulting the hit
- int pdgID // PDG ID of the particle that created this hit
#- edm::Vector3f dir // try to replace momentum with dir and P=|momentum|
#- float P // |momentum| or maybe betagamma better?
#- float dir_theta //
#- float dir_phi //
CALO¶
CALO Digitization Hit (cell)¶
cell id (ushort)
high range grayscale (int)
low range grayscale (int)
(link to sim hit)
yaml code:
####
edm::CaloDigiCell:
Description: "calo cell digitization"
Author: "Z.Tang Z.Quan"
Members:
- unsigned int cellCode // encoded cell code
- std::array<int, 3> grayHR // total grayscale value in CMOS for high range, 3 radius
- std::array<int, 3> grayLR // total grayscale value in CMOS for low range, 3 radius
OneToOneRelations:
- edm::CaloSimCell siminfo // if there is any...
CALO Reconstruction Hit (cell)¶
cell id (ushort*3)
edep (float)
(link to digi hit)
####
edm::CaloRecoCell:
Description: "calo cell after calibration"
Author: "Z.Tang Z.Quan"
Members:
- float edep // cell edep [GeV] after calibration
- short ix // X index of the cell in calo
- short iy // Y index of the cell in calo
- short iz // Z index of the cell in calo
OneToOneRelations:
- edm::CaloDigiCell digiinfo // link to digi object
#maybe also need other links in the future...
CALO cluster¶
2 tpyes of collections: CaloClusters_Calib CaloClusters_Sim
####
edm::CaloClusters:
Description: "Calo Clusters"
Author: "C.Zhang et al"
Members:
- int id // cluster ID
- float edep // cluster total energy deposition
VectorMembers:
- uint16_t ihits // hit id in the cluster
CALO axis¶
6 types of collection: [PCA,NCDER,CNN]X[_Calib,_Sim]
####
edm::CaloShowerAxis:
Description: "Calo Shower Axis"
Author: "C.Zhang et al"
Members:
- int id // Shower ID
- edm::Vector3f dir // [dx,dy,dz]
- edm::Vector3f entryCoor // [x1,y1,z1]
- edm::Vector3f cog // [x0,y0,z0]
- edm::Vector3f exitCoor // [x2,y2,z2]
VectorMembers:
- uint16_t iclusters // cluster ids
#- uint16_t iHits // hit ids <optional>
PSD¶
PSD Digitization Hit (bar)¶
cell code (uint)
ADC0, ADC1 (short) for 2 SiPM at the moment
zero suppressed
(TDC[2]) (short)
(link to sim hit)
yaml code:
####
edm::PSDDigiCell:
Description: "digi hit for psd bar v0"
Author: "Z.Tang, Q.Wu"
Members:
- unsigned int cellCode // the same bar/tile code as in TrackingSimHit
- int ADC0 // SiPM ADC value, one for each side
- int ADC1 //
#//- short TDC[2] // reserved for TDC
#OneToManyRelations:
#- edm::TrackingSimHit siminfos // link to lots of sim hits, do we need?
PSD Reconstruction hit (bar)¶
cell code (uint)
edep (float) reconstructed edep
yaml code:
####
edm::PSDRecoCell:
Description: "reco hit for psd bar v0"
Author: "Z.Tang, Q.Wu"
Members:
- unsigned int cellCode //
- float edep // reconstructed edep
- float edepBirksCorr // with Birks law correction (experimental)
- float nPE0 // convert ADC to nPE at SiPM w/ corrections
- float nPE1 // convert ADC to nPE at SiPM w/ corrections
- float hitpos // reco hit local position from bar alone
FIT¶
FIT Digitization Hit (mat sipm channel)¶
cell code (uint)
channelID (short)
ADC0, ADC1 (short) for 2 SiPM at the moment
zero suppressed
(TDC[2]) (short)
(link to sim hit)
yaml code:
####
edm::FITDigiCell:
Description: "digi hit for FIT v0"
Author: "Z.Tang, J Wang"
Members:
- unsigned int cellCode // the same mat code as in TrackingSimHit
- uint16_t channelID // channel id inside a MAT (3 SiPM at the moment)
- int ADC // SiPM channel ADC value
#//- short TDC // reserved for TDC
OneToManyRelations:
- edm::TrackingSimHit siminfos // link to lots of sim hits, do we need?
FIT Reconstruction hit (mat)¶
cell code (uint)
edep (float) reconstructed edep
yaml code:
####
edm::FITRecoCell:
Description: "reco hit for FIT v0"
Author: "Z.Tang, J.Wang"
Members:
- unsigned int cellCode //
- uint16_t channelID // channel id inside a MAT (3 SiPM)
- float edep // reconstructed edep
#- float edepBirksCorr // with Birks law correction (experimental)
FIT cluster object¶
####
edm::FITCluster:
Description: "FIT Cluster"
Author: "J.Wang et al"
Members:
- unsigned int cellCode // cell code of the mat
- bool ifOddLayer // flag of whether on an odd numbered layer
- char vertAligned // flag of cell projection, see DirectionInfo in GeometrySvc
- uint16_t peakChannel // channel ID of the peak
- float peakChannelAmp // after calibration, in unit of p.e. [float]
- uint16_t peakLeft // how many channels are on the left side of the peak channel?
- uint16_t peakRight // how many channels are on the right side of the peak channel?
- float clusterAmp // total channel amp
- uint16_t clusterSize // number of channels with amp > neighbor threshold
- float clusterCharge // reconstructed cluster |z| if m_trackType==calo seed (default -1)
- edm::Vector3f posLocal // wrt layer [?]
- edm::Vector3f position // cluster position in global coo, use mat coo for the unkown direction
- int type // simple cluster, or splited from large cluster(1to2,even 1to3...)
VectorMembers:
- uint16_t channels // channel id within a mat
- float channelAmps // corrected?
FIT track¶
####
edm::FITTrack:
Description: "FIT Track"
Author: "J.Wang et al"
Members:
- int seedType // blind search, calo seed, scd seed
- edm::Vector3f fittedDir //
- edm::Vector3f fittedPos // impact point closest to CALO
- int impactSector // 0~4
- int impactLayer // initial hit from outer layers
- double particleZ //0~gamma, 1 charged particle
- double chi2x //
- double chi2y //
- double ndfx // int?
- double ndfy //
- int nHitX // number of y hit in X layer
- int nHitY // number of x hit in Y layer
- int nHitXY // number of x&y pair in physical geo
- double trackLength // ?
VectorMembers:
- short clusterIDs // maybe podio relation
- short planes // layer#
#- float fittedCov //
TRD¶
TRD Digitization Hit (module)¶
cell code (uint)
ADC (short*128) readouts for channels
(link to sim hit)
yaml code:
####
edm::TRDDigiCell:
Description: "digi hit for TRD v0"
Author: "Z.Tang, C.Dai"
Members:
- unsigned int cellCode // the same mat code as in TrackingSimHit
- std::array<short,128> ADC // ADC values for all channels in a module
#//- std::array<short,128> TDC // reserved for TDC
#OneToManyRelations:
#- edm::TrackingSimHit siminfos // link to lots of sim hits, do we need?
TRD Reconstruction hit (module)¶
cell code (uint)
rawEdep (float*128) direct reco edep for channels
corrEdep (float*128) corrected based on input position
edep (float) reconstructed edep for the XR channel
yaml code:
####
edm::TRDRecoCell:
Description: "reco hit for TRD v0"
Author: "Z.Tang, C.Dai"
Members:
- unsigned int cellCode // cell code (module)
- float edep // reconstructed edep of selected channels
- std::array<float,128> rawEdep // raw edep from ADC
- std::array<float,128> corrEdep // considering also lateral position correction
Trigger¶
Fast Trigger Object¶
subdet (ushort?)
type (ushort?)
trigger region (ushort)
trigger time (float)
####
edm::FastTrigger:
Description: "fast trigger digi & calculation in regions, for subdets (CALO, PSD, ...)"
Author: "Z.Tang M.Xu"
Members:
- char det // calo pmt, calo pd, psd, ...
- char type // det specific, e.g. calo= LEE,LEG,...
- char region // triggered region (core, shell1,shell2, ...)
- float time // trigger time simulation, to be used in high level trigger
Trigger Object¶
trigger pattern (uint)
links to fast trigger objects
####
edm::Trigger:
Description: "high level trigger results based on fast triggers"
Author: "Z.Tang M.Xu"
Members:
- unsigned int pattern // trigger pattern
OneToManyRelations:
- edm::FastTrigger fastTrg // link to fast triggers
Global Objects¶
Global Track¶
yaml code:
####
edm::GlobalTrack:
Description: "Reconstructed track from SCD cluster and FIT clusters"
Author : "ZYQU"
Members:
- edm::Vector3f position // position
- edm::Vector3f direction // direction
- int nHit // number of hit used in this track
- float chi2 // fited Chi2 with default measurement error
- float charge // Global Charge from all Clusters
- float chargeSCD // Charge estimated from SCD
- float chargeFIT // Charge estimated from FIT
- int type // type of track, 0 for half track, 1 for whole track
VectorMembers:
- edm::Vector3f coos // coordinate used in the fit
OneToManyRelations:
- edm::SCDCluster scdcls // SCD cluster collection
- edm::FITCluster fitcls // FIT cluster collection
# still need more high level reco objects