#ifndef ATLAS_AtlIDTrack
#define ATLAS_AtlIDTrack
#ifndef ATLAS_AtlTRTDigit
#include <AtlTRTDigit.h>
#endif
#ifndef ATLAS_AtlPixelHit
#include "AtlPixelHit.h"
#endif
#ifndef ATLAS_AtlSCT3DHit
#include "AtlSCT3DHit.h"
#endif
#ifndef ROOT_HepVtxTrackHelix
#include <HepVtxTrackHelix.h>
#endif
#ifndef ROOT_TRefArray
#include <TRefArray.h>
#endif
#ifndef HEP_HepMCParticle
#include <HepMCParticle.h>
#endif
#include <iostream>
class AtlIDTrack : public HepVtxTrackHelix {
private:
TRefArray *fTRTHits;
TRefArray *fPixelHits;
TRefArray *fSCTHits;
TRef *fMCParticle;
Float_t fMCParticleProb;
Int_t fN_ContribPixelLayers;
Bool_t fExpectHitInBLayer;
Int_t fN_BLayerHits;
Int_t fN_BLayerOutliers;
Int_t fN_BLayerSharedHits;
Int_t fN_PixelHits;
Int_t fN_PixelOutliers;
Int_t fN_PixelHoles;
Int_t fN_PixelSharedHits;
Int_t fN_GangedPixels;
Int_t fN_GangedFlaggedFakes;
Int_t fN_PixelDeadSensors;
Int_t fN_PixelSpoiltHits;
Int_t fN_SCTHits;
Int_t fN_SCTOutliers;
Int_t fN_SCTHoles;
Int_t fN_SCTDoubleHoles;
Int_t fN_SCTSharedHits;
Int_t fN_SCTDeadSensors;
Int_t fN_SCTSpoiltHits;
Int_t fN_TRTHits;
Int_t fN_TRTOutliers;
Int_t fN_TRTHoles;
Int_t fN_TRTHighThresholdHits;
Int_t fN_TRTHighThresholdOutliers;
Int_t fN_TRTDeadStraws;
Int_t fN_TRTTubeHits;
Float_t fPixeldEdx;
public:
AtlIDTrack();
AtlIDTrack(Int_t Id, Float_t Chi2, Int_t NDoF,
Float_t Xref, Float_t Yref, Float_t Zref, Float_t Phi0,
Float_t QovP, Float_t D0, Float_t Z0, Float_t Theta0,
const Float_t CovMat[15] = 0);
virtual ~AtlIDTrack();
virtual void Clear(Option_t *option = "");
virtual const HepMagneticField* GetMagneticField() const;
virtual void Print(Option_t *option = "") const;
static void PrintHeader();
static void PrintFooter();
void PrintHits();
void AddTRTHit(AtlTRTDigit *hit);
void AddPixelHit(AtlPixelHit *hit);
void AddSCTHit(AtlSCT3DHit *hit);
inline HepMCParticle* GetMCParticle() const {
if (fMCParticle->GetObject() == 0)
std::cout << std::endl
<< "WARNING !!!! RETURNED MCPARTICLE IS 0 !!!" << std::endl
<< "Please use HasValidTruthMatch(Prob) before!"
<< std::endl << std::endl;
return (HepMCParticle*)fMCParticle->GetObject();
}
inline Float_t GetMCParticleProb() const {
return fMCParticleProb;
}
inline void SetMCParticle(HepMCParticle *mcprt,
Float_t prob) {
*fMCParticle = (TObject*)mcprt;
fMCParticleProb = prob;
}
inline Bool_t HasValidTruthMatch(Float_t Prob) {
if ( fMCParticle->GetObject() == 0) return kFALSE;
else return ( fMCParticleProb > Prob ) ? kTRUE : kFALSE;
}
inline TRefArray* GetTRTHits() const {
return fTRTHits;
}
inline TRefArray* GetPixelHits() const {
return fPixelHits;
}
inline TRefArray* GetSCTHits() const {
return fSCTHits; }
inline Int_t GetN_ContribPixelLayers() const {
return fN_ContribPixelLayers;
}
inline Bool_t ExpectHitInBLayer() const {
return fExpectHitInBLayer;
}
inline Int_t GetN_BLayerHits() const {
return fN_BLayerHits;
}
inline Int_t Get_BLayerOutliers() const {
return fN_BLayerOutliers;
}
inline Int_t GetN_BLayerSharedHit() const {
return fN_BLayerSharedHits;
}
inline Int_t GetN_PixelHits() const {
return fN_PixelHits;
}
inline Int_t GetN_PixelOutliers() const {
return fN_PixelOutliers;
}
inline Int_t GetN_PixelHoles() const {
return fN_PixelHoles;
}
inline Int_t GetN_PixelSharedHits() const {
return fN_PixelSharedHits;
}
inline Int_t GetN_GangedPixels() const {
return fN_GangedPixels;
}
inline Int_t GetN_GangedFlaggedFakes() const {
return fN_GangedFlaggedFakes;
}
inline Int_t GetN_PixelDeadSensors() const {
return fN_PixelDeadSensors;
}
inline Int_t GetN_PixelSpoiltHits() const {
return fN_PixelSpoiltHits;
}
inline Int_t GetN_SCTHits() const {
return fN_SCTHits;
}
inline Int_t GetN_SCTOutliers() const {
return fN_SCTOutliers;
}
inline Int_t GetN_SCTHoles() const {
return fN_SCTHoles;
}
inline Int_t GetN_SCTDoubleHoles() const {
return fN_SCTDoubleHoles;
}
inline Int_t GetN_SCTSharedHits() const {
return fN_SCTSharedHits;
}
inline Int_t GetN_SCTDeadSensors() const {
return fN_SCTDeadSensors;
}
inline Int_t GetN_SCTSpoiltHits() const {
return fN_SCTSpoiltHits;
}
inline Int_t GetN_TRTHits() const {
return fN_TRTHits;
}
inline Int_t GetN_TRTOutliers() const {
return fN_TRTOutliers;
}
inline Int_t GetN_TRTHoles() const {
return fN_TRTHoles;
}
inline Int_t GetN_TRTHighThresholdHits() const {
return fN_TRTHighThresholdHits;
}
inline Int_t GetN_TRTHighThresholdOutliers() const {
return fN_TRTHighThresholdOutliers;
}
inline Int_t GetN_TRTDeadStraws() const {
return fN_TRTDeadStraws;
}
inline Int_t GetN_TRTTubeHits() const {
return fN_TRTTubeHits;
}
inline Float_t GetPixeldEdx() const {
return fPixeldEdx;
}
inline void SetN_ContribPixelLayers(Int_t N_ContribPixelLayers) {
fN_ContribPixelLayers = N_ContribPixelLayers;
}
inline void SetExpectHitInBLayer(Bool_t ExpectHitInBLayer) {
fExpectHitInBLayer = ExpectHitInBLayer;
}
inline void SetN_BLayerHits(Int_t N_BLayerHits) {
fN_BLayerHits = N_BLayerHits;
}
inline void SetN_BLayerOutliers(Int_t N_BLayerOutliers) {
fN_BLayerOutliers = N_BLayerOutliers;
}
inline void SetN_BLayerSharedHits(Int_t N_BLayerSharedHits) {
fN_BLayerSharedHits = N_BLayerSharedHits;
}
inline void SetN_PixelHits(Int_t N_PixelHits) {
fN_PixelHits = N_PixelHits;
}
inline void SetN_PixelOutliers(Int_t N_PixelOutliers) {
fN_PixelOutliers = N_PixelOutliers;
}
inline void SetN_PixelHoles(Int_t N_PixelHoles) {
fN_PixelHoles = N_PixelHoles;
}
inline void SetN_PixelSharedHits(Int_t N_PixelSharedHits) {
fN_PixelSharedHits = N_PixelSharedHits;
}
inline void SetN_GangedPixels(Int_t N_GangedPixels) {
fN_GangedPixels = N_GangedPixels;
}
inline void SetN_GangedFlaggedFakes(Int_t N_GangedFlaggedFakes) {
fN_GangedFlaggedFakes = N_GangedFlaggedFakes;
}
inline void SetN_PixelDeadSensors(Int_t N_PixelDeadSensors) {
fN_PixelDeadSensors = N_PixelDeadSensors;
}
inline void SetN_PixelSpoiltHits(Int_t N_PixelSpoiltHits) {
fN_PixelSpoiltHits = N_PixelSpoiltHits;
}
inline void SetN_SCTHits(Int_t N_SCTHits) {
fN_SCTHits = N_SCTHits;
}
inline void SetN_SCTOutliers(Int_t N_SCTOutliers) {
fN_SCTOutliers = N_SCTOutliers;
}
inline void SetN_SCTHoles(Int_t N_SCTHoles) {
fN_SCTHoles = N_SCTHoles;
}
inline void SetN_SCTDoubleHoles(Int_t N_SCTDoubleHoles) {
fN_SCTDoubleHoles = N_SCTDoubleHoles;
}
inline void SetN_SCTSharedHits(Int_t N_SCTSharedHits) {
fN_SCTSharedHits = N_SCTSharedHits;
}
inline void SetN_SCTDeadSensors(Int_t N_SCTDeadSensors) {
fN_SCTDeadSensors = N_SCTDeadSensors;
}
inline void SetN_SCTSpoiltHits(Int_t N_SCTSpoiltHits) {
fN_SCTSpoiltHits = N_SCTSpoiltHits;
}
inline void SetN_TRTHits(Int_t N_TRTHits) {
fN_TRTHits = N_TRTHits;
}
inline void SetN_TRTOutliers(Int_t N_TRTOutliers) {
fN_TRTOutliers = N_TRTOutliers;
}
inline void SetN_TRTHoles(Int_t N_TRTHoles) {
fN_TRTHoles = N_TRTHoles;
}
inline void SetN_TRTHighThresholdHits(Int_t N_TRTHighThresholdHits) {
fN_TRTHighThresholdHits = N_TRTHighThresholdHits;
}
inline void SetN_TRTHighThresholdOutliers(Int_t N_TRTHighThresholdOutliers) {
fN_TRTHighThresholdOutliers = N_TRTHighThresholdOutliers;
}
inline void SetN_TRTDeadStraws(Int_t N_TRTDeadStraws) {
fN_TRTDeadStraws = N_TRTDeadStraws;
}
inline void SetN_TRTTubeHits(Int_t N_TRTTubeHits) {
fN_TRTTubeHits = N_TRTTubeHits;
}
inline void SetPixeldEdx (Float_t PixeldEdx ) {
fPixeldEdx = PixeldEdx ;
}
ClassDef(AtlIDTrack,11)
};
#endif