Skip to content
Snippets Groups Projects
Forked from atlas / athena
21272 commits behind the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
FillAlignTRTHits.h 2.79 KiB
/*
  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
*/

#ifndef TRT_CALIBTOOLS__FILLALIGNTRTHITS_H
#define TRT_CALIBTOOLS__FILLALIGNTRTHITS_H
/********************************************************************

NAME:     FillAlignTRTHits
PACKAGE:  TRT_AlignTOOLS

AUTHORS:  Jorgen Beck Hansen
CREATED:  December 2005

PURPOSE:  Tool to fill Hit info into the TRT::Hit messenger class

********************************************************************/

// INCLUDES:

#include <string>
#include "TRT_CalibTools/IFillAlignTrkInfo.h"
#include "TRT_ConditionsServices/ITRT_StrawNeighbourSvc.h"
#include "TRT_ConditionsServices/ITRT_CalDbTool.h"
#include "TRT_ConditionsServices/ITRT_StrawStatusSummaryTool.h"
#include "TRT_DriftCircleTool/ITRT_DriftCircleTool.h"
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "GaudiKernel/ServiceHandle.h"
#include "TrkToolInterfaces/IUpdator.h"
#include <TNtuple.h>
#include <TFile.h>
#include "TRT_DriftFunctionTool/ITRT_DriftFunctionTool.h"

class AtlasDetectorID;
class TRT_ID;

namespace Trk {
  class IPropagator;
  class RIO_OnTrack;
  class Track;
  class TrackStateOnSurface;
  class ITruthToTrack;
  class IResidualPullCalculator;
 }

class FillAlignTRTHits :  virtual public IFillAlignTrkInfo, public AthAlgTool {
public:

  FillAlignTRTHits(const std::string& type, const std::string& name, const IInterface* parent);

  virtual ~FillAlignTRTHits() {}

  virtual StatusCode initialize();
  virtual StatusCode finalize();

  //virtual bool fill(const Trk::Track* aTrack, TRT::TrackInfo* output) const;
  virtual bool fill(const Trk::Track* aTrack, TRT::TrackInfo* output, const xAOD::EventInfo& eventInfo,
                    const xAOD::VertexContainer& vertices);

private:
  const AtlasDetectorID* m_DetID;
  const TRT_ID* m_TRTID;

  ToolHandle< ITRT_DriftFunctionTool > m_driftFunctionTool{this, "TRTDriftFunctionTool", "TRT_DriftFunctionTool", "Drift function tool name"};
  ToolHandle<Trk::IUpdator> m_updatorHandle{this, "UpdatorTool", "Trk::KalmanUpdator/TrkKalmanUpdator", "Measurement updator to calculate unbiased track states"};
  ToolHandle<ITRT_CalDbTool> m_trtcaldbTool {this, "TRTCalDbTool", "ITRT_CalDbTool", "Access to the folder of the calibration constants"}; 
  ServiceHandle<ITRT_StrawNeighbourSvc> m_neighbourSvc ;
  ToolHandle<ITRT_StrawStatusSummaryTool> m_TRTStrawSummaryTool; //!< The ConditionsSummaryTool
  Trk::IUpdator* m_updator; //!< updator for unbiased states

  float m_maxDistance ;
  float m_maxTimeResidual ;
  int m_minTimebinsOverThreshold ;
  float m_maxTrackChisquarePerDof ;
  unsigned int m_numOfHitsTotal ;
  unsigned int m_numOfHitsAccepted ;
  unsigned int m_numOfProcessedTracks ;
  float m_DoMCCosmicTimeShift;

  TFile* m_f;
  TNtuple* m_ntuple;
};

#endif //  TRT_CALIBTOOLS__FILLALIGNTRTHITS_H