- #ifndef TB_EFFICIENCY_H
- #define TB_EFFICIENCY_H 1
-
- // AIDA
- #include "AIDA/IHistogram1D.h"
- #include "AIDA/IHistogram2D.h"
- #include "TEfficiency.h"
- #include "AIDA/IAxis.h"
-
- #include "AIDA/IProfile2D.h"
- #include "AIDA/IProfile1D.h"
-
- // Tb/TbEvent
- #include "Event/TbTrack.h"
- #include "Event/TbCluster.h"
- #include "Event/TbVertex.h"
-
- // Tb/TbKernel
- #include "TbKernel/ITbTrackFit.h"
- #include "TbKernel/TbAlgorithm.h"
- #include "TbKernel/ITbClusterFinder.h"
-
- #include "TFile.h"
- #include "GaudiUtils/Aida2ROOT.h"
-
- #include "TH2D.h"
-
-
- /** @class TbEffPur TbEffPur.h
- *
- * @author Dan Saunders
- */
-
- class TbEffPur : public TbAlgorithm {
- public:
- TbEffPur(const std::string& name, ISvcLocator* pSvcLocator);
- virtual ~TbEffPur() {}
-
- // Gaudi methods.
- StatusCode initialize();
- StatusCode execute();
- StatusCode finalize();
-
- private:
- // Members.
- std::string m_trackLocation;
- std::string m_vertexLocation;
- std::string m_clusterLocation;
- unsigned int m_DUTindex;
- LHCb::TbTracks * m_tracks;
- LHCb::TbClusters * m_clusters;
- ITbTrackFit * m_trackFit;
- double m_pitch;
- int m_nDUTpixels;
-
-
- unsigned int m_nTracks;
- unsigned int m_nClusters;
- unsigned int m_nTrackedClusters;
-
- unsigned int m_nClustersPassedCentral;
- unsigned int m_nTracksCentral;
-
- unsigned int m_nClustersPassedCorner;
- unsigned int m_nTracksCorner;
-
- double m_eff;
- double m_pur;
- double m_telescopeClusterVetoDelT;
- double m_edgeVetoDistance;
-
- TEfficiency * m_effs;
- TEfficiency * m_purs;
- TEfficiency * m_effHitmap;
- TEfficiency * m_purHitmap;
- TEfficiency * m_effHitmapInterPixel;
- TEfficiency * m_effHitmapInterPixelTriple;
- TEfficiency * m_purHitmapInterPixel;
- TEfficiency * m_effX;
- TEfficiency * m_effY;
- std::vector<TEfficiency*> m_effHitmapInterPixelVsSizes;
-
- unsigned int m_deadAreaRadius;
- double m_xLow;
- double m_xUp;
- double m_yLow;
- double m_yUp;
- double m_probCut;
-
- double m_rResidualCut;
- double m_tResidualCut;
-
- unsigned int m_chargeCutLow;
- unsigned int m_chargeCutUp;
-
- unsigned int m_litSquareSide;
- unsigned int m_nEvent;
- bool m_viewerOutput;
- unsigned int m_viewerEvent;
- double m_tGap;
- double m_correlationTimeWindow;
- bool m_applyVeto;
- std::vector<bool> * m_trackAssociated;
-
- // Plots.
- AIDA::IHistogram2D * m_remainsCorrelationsX;
- AIDA::IHistogram2D * m_remainsCorrelationsY;
- AIDA::IHistogram2D * m_remainsDifferencesXY;
- AIDA::IHistogram2D * m_clusterRemainsPositionsGlobal;
- AIDA::IHistogram2D * m_trackRemainsPositionsGlobal;
- AIDA::IHistogram2D * m_clusterRemainsPositionsLocal;
- AIDA::IHistogram2D * m_trackRemainsPositionsLocal;
- AIDA::IHistogram2D * m_vetoTracksHitmap;
- AIDA::IHistogram2D * m_vetoClustersHitmap;
- AIDA::IHistogram2D * m_timeResidualVsColumn;
-
-
- // Methods.
- void effPur();
- void trackClusters(std::vector<LHCb::TbCluster*> * cutClusters,
- std::vector<LHCb::TbTrack*> * cutTracks);
- bool matchTrackToCluster(LHCb::TbCluster * cluster,
- LHCb::TbTrack * track);
- double getRadialSeparation(LHCb::TbCluster * cluster,
- LHCb::TbTrack * track);
- bool litPixel(LHCb::TbCluster * cluster,
- LHCb::TbTrack * track);
- bool globalCutPosition(Gaudi::XYZPoint);
- void outputViewerData();
- void applyVeto(std::vector<LHCb::TbCluster*> * cutClusters,
- std::vector<LHCb::TbTrack*> * cutTracks);
- void correlateRemains(std::vector<LHCb::TbTrack*> * cutTracks,
- std::vector<LHCb::TbCluster*> * cutClusters);
- void fillTrackClusters(std::vector<LHCb::TbCluster*> * cutClusters,
- std::vector<LHCb::TbTrack*> * cutTracks, double tlow, double tup);
- void fillAllTrackClusters(std::vector<LHCb::TbCluster*> * cutClusters,
- std::vector<LHCb::TbTrack*> * cutTracks);
- void outputDeadRegion(unsigned int, unsigned int);
- bool outsideDUT(Gaudi::XYZPoint);
- bool interceptDeadPixel(Gaudi::XYZPoint);
- };
- #endif