Commit f7c720e0 authored by Jochen Meyer's avatar Jochen Meyer Committed by Graeme Stewart
Browse files

Updating MboyAthTool-07-85-00 (MboyAthTool-07-85-00)

parent 310658ab
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef FindMonitor_H
#define FindMonitor_H
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "MboyAthToolInterfaces/IFindMonitor.h"
/////////////////////////////////////////////////////////////////////////////
#ifdef HAVE_NEW_IOSTREAMS
//gcc3.2
#include <sstream>
#include <iostream>
#include <iomanip>
#include <fstream>
#else
//gcc 295
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#endif
#if HAVE_CXX_STDC_HEADERS
# include <cstdio>
# include <cmath>
#else
# include <stdio.h>
# include <math.h>
#endif
#include <algorithm>
#include <iterator>
#include <list>
#include <vector>
#include <map>
#include <string>
#include <utility>
class IMboyAthToolHelper;
namespace Muon {
class MuPatCandidateBase;
class MuPatSegment;
class MuPatTrack;
class MuonSegment;
/**
@class FindMonitor
@author samusog@cern.ch
*/
class FindMonitor:public AthAlgTool, virtual public IFindMonitor{
public:
FindMonitor(const std::string&,const std::string&,const IInterface*);
virtual ~FindMonitor ();
public:
virtual StatusCode initialize ();
virtual StatusCode finalize ();
virtual void Reset() ;
virtual void PrintSegConfig ( Muon::MuPatCandidateBase& candidate, const std::vector<Muon::MuPatSegment*>& MuPatSegmentFree ) ;
virtual bool AlreadySuccessfullyTried ( Muon::MuPatCandidateBase& candidate, const std::vector<Muon::MuPatSegment*>& MuPatSegmentFree) ;
virtual void RegisterIfSuccessful ( Muon::MuPatCandidateBase& candidate, const std::vector<Muon::MuPatSegment*>& MuPatSegmentFree, const std::vector<Muon::MuPatTrack*>* pVectorpMuPatTrack ) ;
private:
///////////////////////////////////
std::string m_ToolName ;
std::vector< std::vector<const Muon::MuonSegment*> > m_CalledConfig ;
ToolHandle< IMboyAthToolHelper > p_OwnEDMHelper ; //!< Pointer On IMboyAthToolHelper
};
}
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef MboyAthToolHelper_H
#define MboyAthToolHelper_H
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "GaudiKernel/ServiceHandle.h"
#include "GaudiKernel/ToolHandle.h"
/////////////////////////////////////////////////////////////////////////////
class IMboyEDMHelper ;
class IMboySvc ;
namespace Trk {
class IMuonboyToTrackParametersTool ;
}
namespace Trk {
class IMuonSegmentToDratTool;
class ITrackToProtoTrackTool;
}
#include "MboyAthToolInterfaces/IMboyAthToolHelper.h"
/**
@class MboyAthToolHelper
@author samusog@cern.ch
*/
class MboyAthToolHelper:public AthAlgTool, virtual public IMboyAthToolHelper{
public:
MboyAthToolHelper(const std::string&,const std::string&,const IInterface*);
virtual ~MboyAthToolHelper ();
public:
///////////////////////////////////
virtual StatusCode initialize ();
virtual StatusCode finalize ();
public:
///////////////////////////////////
/**BackTrack */
virtual MB_Track* MboyMuonBackTrack(MboyVarByName* pMboyVarByName,MB_Track* pMB_Track ) ;
/**Collect Matter the Field connection is provided by the service) */
virtual StatusCode DoCollectMatter(
int AtCosmMatter,
const Trk::TrackParameters* pTrackParameters,
std::vector<MbMuSc*>* pVectorOfMbMuSc
) ;
/** Convertors PrepRawDataColl->PrepRawData */
virtual void CvMdtPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector<const Muon::MdtPrepDataCollection*>& PrepCols) ;
virtual void CvCscPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector<const Muon::CscPrepDataCollection*>& PrepCols) ;
virtual void CvTgcPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector<const Muon::TgcPrepDataCollection*>& PrepCols) ;
virtual void CvRpcPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector<const Muon::RpcPrepDataCollection*>& PrepCols) ;
/** Convertors PrepRawDataColl->PrepRawData */
virtual void CvMdtPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const Muon::MdtPrepDataCollection* PrepCol) ;
virtual void CvCscPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const Muon::CscPrepDataCollection* PrepCol) ;
virtual void CvTgcPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const Muon::TgcPrepDataCollection* PrepCol) ;
virtual void CvRpcPrepDataCollection( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const Muon::RpcPrepDataCollection* PrepCol) ;
/** Convertors RIO_OnTrack->PrepRawData */
virtual void CvMdtDriftCircleOnTrack( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector< const Muon::MdtDriftCircleOnTrack* >& mdts) ;
virtual void CvMdtDriftCircleOnTrack( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector< std::vector< const Muon::MdtDriftCircleOnTrack* > >& mdts) ;
virtual void CvMuonClusterOnTrack ( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector< const Muon::MuonClusterOnTrack* >& clusters ) ;
virtual void CvMuonClusterOnTrack ( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector< std::vector< const Muon::MuonClusterOnTrack* > >& clusters) ;
virtual void CvRIO_OnTrack ( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector<const Trk::RIO_OnTrack*>& rios ) ;
/** Convertors MuonSegment->PrepRawData */
virtual void CvMuonSegment( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const std::vector<const Muon::MuonSegment*>& VectorOfMuonSegment ) ;
virtual void CvMuonSegment( std::vector<const Trk::PrepRawData*>& VectorOfpPrepData , const Muon::MuonSegment* pMuonSegment ) ;
/**Dumpers */
virtual StatusCode MboyDumpSegmentCollectionToolDoDump ( std::string SegmentCollectionLocation , std::string TrackCollectionLocation, std::ofstream* pOutFile ) ;
virtual StatusCode MboyDumpSegmentCollectionToolDoDump ( std::string SegmentCollectionLocation , std::ofstream* pOutFile ) ;
virtual StatusCode MboyDumpTrackCollectionToolDoDump ( std::string TrackCollectionLocation , std::ofstream* pOutFile ) ;
virtual StatusCode MboyDumpTrackParticleContainerToolDoDump( std::string TrackParticleContainerLocation , std::ofstream* pOutFile ) ;
/**Converters in EDM objects*/
virtual StatusCode GetSegmentCollection ( const MB_SegmentStoreAth* pMB_SegmentStoreAth, Trk::SegmentCollection* pSegmentCollection , int Clean = 1 ) ;
virtual std::vector<const Muon::MuonSegment*>* GetSegmentCollection ( const MB_SegmentStoreAth* pMB_SegmentStoreAth , int Clean = 1 ) ;
virtual StatusCode GetTrackCollection ( const MB_TrackStoreAth* pMB_TrackStoreAth , TrackCollection* pTrackCollection, TrackCollection* pTrackCollection_MSonly ) ;
virtual StatusCode GetTrackIP ( const MB_TrackAth* pMB_TrackAth , Trk::Track*& pTrack ) ;
virtual StatusCode GetTrackMS ( const MB_TrackAth* pMB_TrackAth , Trk::Track*& pTrack ) ;
virtual StatusCode GetParticleCollection( const TrackCollection* pTrackCollection , Rec::TrackParticleContainer* pTrackParticleContainer ) ;
/**Fill a MuonRecDigiStoreAth with PrepRawData set */
virtual StatusCode FillMuonRecDigiStoreWithVectorOfPrepData_Base( const std::vector<const Trk::PrepRawData*>& VectorOfpPrepData, MuonRecDigiStoreAth* pMuonRecDigiStoreAth ) ;
/**Do reconstruction of Track/Segment */
virtual StatusCode DoRec( const MboyPosDigiChoice* pMboyPosDigiChoice, MuonRecDigiStoreAth* pMuonRecDigiStoreAth, MB_TrackStoreAth* pMB_TrackStoreAth, MB_SegmentStoreAth* pMB_SegmentStoreAth ) ;
/** Define configuration variables to call the Svc */
virtual MboyVarByName* SetSettingsForCall(
std::string& ToolName ,
int NberOfCtrlPpty ,
std::vector<std::string>& NameOfCtrlPpty ,
double* ValueOfCtrlPpty ,
std::vector<std::string>& CommentOfCtrlPpty
) ;
/** Dump MboyVarByName */
virtual void PrintOutVariables(MboyVarByName* pMboyVarByName);
/** Get Segments from PrepRawData */
virtual std::vector<const Muon::MuonSegment*>* findFromPrep( MboyVarByName* pMboyVarByName, const std::vector<const Trk::PrepRawData*>& VectorOfpPrepData,MboyROAStoreAth* pMboyROAExternalStoreAth , int Clean ) ;
/** find track in the muon system */
virtual MbProtoTrack* find(
MboyVarByName* pMboyVarByName,
MbProtoTrack* pMbProtoTrack ,
MbProtoTrack* pTargetSegmentsProtoTrack
) ;
/** refine */
virtual MbProtoTrack* refine(
MboyVarByName* pMboyVarByName,
MbProtoTrack* pMbProtoTrack,
Trk::Track*& pTrackRefined ,
MuonRecDigiStoreAth* pMuonRecDigiStoreAth
) ;
/** Convert MuPatSegment to MbDRAT */
virtual MbDRAT* convertMuPatSegmentToMbDRAT (
MuonRecDigiStoreAth* pMuonRecDigiStoreAth ,
const Muon::MuPatSegment* pMuPatSegment
) ;
/** Set a MbDRAT */
virtual void SetAMbDRAT (
MboyVarByName* pMboyVarByName,
MbDRAT* pMbDRAT
) ;
/** Load the Event */
virtual void LoadEvent(
MboyVarByName* pMboyVarByName,
MuonRecDigiStoreAth* pMuonRecDigiStoreAth
) ;
virtual MbDRAT* GiveMuPatSegmentToMbDRAT ( const Muon::MuPatSegment* pMuPatSegment, int& kounter ) ;
virtual void CopyMbDRATToMuPatSegment ( const MbDRAT* pMbDRAT , Muon::MuPatSegment* pMuPatSegment ) ;
virtual void CopyMuPatSegmentToMbProtoTrack (
int& Iok,
const Muon::MuPatSegment* pMuPatSegment ,
MbProtoTrack* pMbProtoTrack
) ;
virtual void CopyMuPatTrackToMbProtoTrack (
int& Iok,
MboyVarByName* pMboyVarByName,
MuonRecDigiStoreAth* pMuonRecDigiStoreAth ,
Muon::MuPatTrack* pMuPatTrack ,
MbProtoTrack* pMbProtoTrack
) ;
virtual void UpdateMuPatTrackFromMbProtoTrack ( const MbProtoTrack* pMbProtoTrack, Muon::MuPatTrack* pMuPatTrack ) ;
virtual Trk::Track* MbProtoTrack2Track(
MbProtoTrack* pMbProtoTrack ,
std::vector<Muon::MuPatSegment*>& MuPatSegmentS_for_New_pMuPatTrack
) ;
/** Wrapped from MboyEDMHelper */
virtual std::string SegmentAssociatedStationName(const Trk::Segment* pSegment);
virtual void SegmentAssociatedStationNames(const Trk::Segment* pSegment, std::vector<std::string >& VectorOfStationNames ) ;
private:
///////////////////////////////////
ToolHandle< Trk::IMuonboyToTrackParametersTool > p_IMuonboyToTrackParametersTool ; //!< Pointer On IMuonboyToTrackParametersTool
ToolHandle< IMboyEDMHelper > p_OwnEDMHelper ; //!< Pointer On IMboyEDMHelper
ToolHandle< Trk::IMuonSegmentToDratTool > p_IMuonSegmentToDratTool ; //!< Pointer On IMuonSegmentToDratTool
ToolHandle< Trk::ITrackToProtoTrackTool > p_ITrackToProtoTrackTool ; //!< Pointer On ITrackToProtoTrackTool
ServiceHandle<IMboySvc> p_IMboySvc ; //!< Pointer On IMboySvc
int m_ForRefineUseCompleteTrack ; //!< Use the complete or the at Spectro only track
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef MboyAthToolMisc_H
#define MboyAthToolMisc_H
#ifdef HAVE_NEW_IOSTREAMS
//gcc3.2
#include <sstream>
#include <iostream>
#include <iomanip>
#include <fstream>
#else
//gcc 295
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#endif
#if HAVE_CXX_STDC_HEADERS
# include <cstdio>
# include <cmath>
#else
# include <stdio.h>
# include <math.h>
#endif
#include <algorithm>
#include <iterator>
#include <list>
#include <vector>
#include <map>
#include <string>
#include <utility>
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef MboyCollectMatterTool_H
#define MboyCollectMatterTool_H
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "GaudiKernel/ServiceHandle.h"
#include "TrkParameters/TrackParameters.h"
#include "TrkGeometry/PlaneLayer.h"
/////////////////////////////////////////////////////////////////////////////
#include "MboyAthTool/MboyAthToolMisc.h"
class MbMuSc;
class IMboyAthToolHelper;
class IMuonboyToLayer;
/**
@class MboyCollectMatterTool
This class is providing access to Muonboy collector of material along a trajectory
@author samusog@cern.ch
*/
static const InterfaceID IID_IMboyCollectMatterTool("MboyCollectMatterTool", 1, 0);
class MboyCollectMatterTool:public AthAlgTool{
public:
MboyCollectMatterTool(const std::string&,const std::string&,const IInterface*);
virtual ~MboyCollectMatterTool ();
public:
///////////////////////////////////
static const InterfaceID& interfaceID();
virtual StatusCode initialize ();
virtual StatusCode finalize ();
StatusCode DoCollectMatter(
const Trk::TrackParameters* pTrackParameters,
std::vector<std::pair<const Trk::TrackParameters*,const Trk::Layer*> >* VectorOfPlaneLayer
);
void GiveSurfaceParameters(
double& MuSpectro_Radius ,
double& MuSpectro_Zcyli ,
double& RadiusProtection
);
private:
///////////////////////////////////
/** Convert MbMuSc in PlaneLayer **/
std::pair<const Trk::TrackParameters*, const Trk::Layer*> DoConvert(
const MbMuSc* pMbMuSc,
double sign
);
ToolHandle< IMboyAthToolHelper > p_OwnEDMHelper ; //!< Pointer On IMboyAthToolHelper
int m_AtCosm ; // Flag beam conditions
double m_MuSpectro_Radius ; // Definition of Muon Spectro Entrance
double m_MuSpectro_Zcyli ; // Definition of Muon Spectro Entrance
double m_RadiusProtection ; // Small radii protection
ToolHandle< IMuonboyToLayer > p_IMuonboyToLayer ; //!< Pointer On IMuonboyToLayer
};
inline const InterfaceID& MboyCollectMatterTool::interfaceID(){return IID_IMboyCollectMatterTool;}
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef MboyDumpMboyStoreTool_H
#define MboyDumpMboyStoreTool_H
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "MboyAthToolInterfaces/IMboyDumpMboyStoreTool.h"
/////////////////////////////////////////////////////////////////////////////
#include "MboyAthTool/MboyAthToolMisc.h"
class MB_SegmentAth;
class MB_TrackStoreAth;
class MB_SegmentStoreAth;
/**
@class MboyDumpMboyStoreTool
@author samusog@cern.ch
*/
class MboyDumpMboyStoreTool:public AthAlgTool, virtual public IMboyDumpMboyStoreTool{
public:
MboyDumpMboyStoreTool(const std::string&,const std::string&,const IInterface*);
virtual ~MboyDumpMboyStoreTool ();
public:
///////////////////////////////////
virtual StatusCode initialize();
virtual StatusCode finalize();
/**Dump Mboy Store */
virtual StatusCode dumpMboyStore(
std::string SegmentStoreLocation ,
std::string TrackStoreLocation ,
std::ofstream* pOutMuonboySegmentStore ,
std::ofstream* pOutMuonboySegmentStoreChecks ,
std::ofstream* pOutMuonboyTrackStore ,
std::ofstream* pOutMuonboyTrackStoreChecks
) ;
private:
///////////////////////////////////
/**Dump pMB_TrackStoreAth*/
void PrintTracks(const MB_TrackStoreAth* pMB_TrackStoreAth,
std::ostream* out,int EventNber) const;
/**Dump pMB_SegmentStoreAth*/
void PrintSegments(const MB_SegmentStoreAth* pMB_SegmentStoreAth,
std::ostream* out,int EventNber) const;
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef MboyDumpNativeSegmentTool_H
#define MboyDumpNativeSegmentTool_H
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "MboyAthToolInterfaces/IMboyDumpNativeSegmentTool.h"
/////////////////////////////////////////////////////////////////////////////
#include "MboyAthTool/MboyAthToolMisc.h"
class IMboyNativeHelper;
#include "MboyAthEvt/MB_SegmentAth.h"
/**
@class MboyDumpNativeSegmentTool
@author samusog@cern.ch
*/
class MboyDumpNativeSegmentTool:public AthAlgTool, virtual public IMboyDumpNativeSegmentTool{
public:
MboyDumpNativeSegmentTool(const std::string&,const std::string&,const IInterface*);
virtual ~MboyDumpNativeSegmentTool ();
public:
///////////////////////////////////
virtual StatusCode initialize();
virtual StatusCode finalize();
/**Dump collection */
virtual StatusCode dumpNativeSegments(
int LetCSCGo ,
int ApplyQualityFactorCut ,
float QualityFactorCut ,
int ApplyNberofDigitsCut ,
int NberofDigitsCut ,
int ApplyNberofPrecisonDigitsCut ,
int NberofPrecisonDigitsCut ,
std::string SegmentStoreLocation ,
std::ofstream* pOutFile
) ;
private:
///////////////////////////////////
/**Validity of a segment*/
int RecSeg_IsOk(
int LetCSCGo ,
int ApplyQualityFactorCut ,
float QualityFactorCut ,
int ApplyNberofDigitsCut ,
int NberofDigitsCut ,
int ApplyNberofPrecisonDigitsCut ,
int NberofPrecisonDigitsCut ,
MB_SegmentAth& TheSegment
);
ToolHandle< IMboyNativeHelper > p_OwnEDMHelper ; //!< Pointer On IMboyNativeHelper
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef MboyFullRecTool_H
#define MboyFullRecTool_H
#include "AthenaBaseComps/AthAlgTool.h"
#include "GaudiKernel/ToolHandle.h"
#include "MboyAthToolInterfaces/IMboyFullRecTool.h"
/////////////////////////////////////////////////////////////////////////////
#include "MboyAthTool/MboyAthToolMisc.h"
class IMboyAthToolHelper;
/**
@class MboyFullRecTool
@author samusog@cern.ch
*/
class MboyFullRecTool:public AthAlgTool, virtual public IMboyFullRecTool{
public:
MboyFullRecTool(const std::string&,const std::string&,const IInterface*);
virtual ~MboyFullRecTool ();
public:
///////////////////////////////////
virtual StatusCode initialize();
virtual StatusCode finalize();
/** Get all stuff */
virtual StatusCode DoRec(
const std::vector<const Trk::PrepRawData*>& VectorOfpPrepData,
int PrintDigitsSummary , int AthPosOff , int SwitchOff , int ShortSummarySegment , int ShortSummaryTrack,
std::string DigiStoreLocation , std::string TrackStoreLocation , std::string SegmentStoreLocation ,
int ProcessingStage ,
std::string SegmentCollectionLocation,
std::string m_TrackCollectionLocation , std::string TrackCollection_MSonlyLocation ,
std::string TrackParticleContainerLocation , std::string TrackParticleContainer_MSonlyLocation
);
virtual StatusCode KountMB_SegmentStoreTDS( std::vector<int>& KounterMB_TrackStoreTDS , std::string& SegmentStoreLocation ) ;
virtual StatusCode KountMB_TrackStoreTDS ( std::vector<int>& KounterMB_SegmentStoreTDS , std::string& TrackStoreLocation ) ;
virtual StatusCode KountSegmentCollection ( std::vector<int>& KounterSegmentCollection , std::string& SegmentCollectionLocation ) ;
virtual StatusCode KountTrackCollection ( std::vector<int>& KounterTrackCollection , std::string& TrackCollectionLocation ) ;
private:
///////////////////////////////////