/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
RecoMuon/Navigation/interface/MuonNavigationSchool.h
85 строк
2 KB
Cms Build
Clang-Format
24 май 2019, 00:16
24 май 2019, 00:16
876d1ce
Код
Авторство
О чём код?
#ifndef Navigation_MuonNavigationSchool_H #define Navigation_MuonNavigationSchool_H /** \class MuonNavigationSchool * * Description: * Navigation school for the muon system * This class defines which DetLayers are reacheable from each Muon DetLayer * (DT, CSC and RPC). The reacheableness is based on an eta range criteria. * * * \author : Stefano Lacaprara - INFN Padova <stefano.lacaprara@pd.infn.it> * * Modification: * * Chang Liu: * The class links maps for nextLayers and compatibleLayers in the same time. * * Cesare Calabria: * GEMs implementation. * * David Nash: * ME0s implementation. */ #include "RecoMuon/Navigation/interface/MuonDetLayerMap.h" #include "TrackingTools/DetLayers/interface/NavigationSchool.h" #include "RecoMuon/DetLayers/interface/MuonDetLayerGeometry.h" #include <vector> #include <map> class MuonBarrelNavigableLayer; class MuonForwardNavigableLayer; class MuonEtaRange; class BarrelDetLayer; class ForwardDetLayer; class MuonNavigationSchool : public NavigationSchool { public: ///Constructor MuonNavigationSchool(const MuonDetLayerGeometry*, bool enableRPC = true, bool enableCSC = true, bool enableGEM = false, bool enableME0 = false); /// Destructor ~MuonNavigationSchool() override; /// return navigable layers, from base class StateType navigableLayers() override; private: /// add barrel layer void addBarrelLayer(const BarrelDetLayer*); /// add endcap layer (backward and forward) void addEndcapLayer(const ForwardDetLayer*); /// link barrel layers void linkBarrelLayers(); /// link endcap layers void linkEndcapLayers(const MapE&, std::vector<MuonForwardNavigableLayer*>&); /// establish inward links void createInverseLinks(); float calculateEta(const float&, const float&) const; private: struct delete_layer { template <typename T> void operator()(T*& p) { if (p) { delete p; p = nullptr; } } }; MapB theBarrelLayers; /// barrel MapE theForwardLayers; /// +z endcap MapE theBackwardLayers; /// -z endcap std::vector<MuonBarrelNavigableLayer*> theBarrelNLC; std::vector<MuonForwardNavigableLayer*> theForwardNLC; std::vector<MuonForwardNavigableLayer*> theBackwardNLC; const MuonDetLayerGeometry* theMuonDetLayerGeometry; }; #endif