1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#ifndef DQMOffline_MuonDPG_BaseTnPEfficiencyTask_H
#define DQMOffline_MuonDPG_BaseTnPEfficiencyTask_H
/*
* \file BaseTnPEfficiencyTask.h
*
* \author L. Lunerti - INFN Bologna
*
*/
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/DQMEDAnalyzer.h"
#include "DataFormats/Common/interface/Handle.h"
#include "DataFormats/MuonReco/interface/Muon.h"
#include "DataFormats/MuonReco/interface/MuonFwd.h"
#include "DataFormats/VertexReco/interface/Vertex.h"
#include "CommonTools/Utils/interface/StringCutObjectSelector.h"
#include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
#include "DataFormats/Common/interface/TriggerResults.h"
#include "DataFormats/HLTReco/interface/TriggerEvent.h"
#include <vector>
#include <string>
#include <map>
class BaseTnPEfficiencyTask : public DQMEDAnalyzer {
public:
/// Constructor
BaseTnPEfficiencyTask(const edm::ParameterSet& config);
/// Destructor
~BaseTnPEfficiencyTask() override;
protected:
/// BeginRun
void dqmBeginRun(const edm::Run& run, const edm::EventSetup& context) override; //final ?
void bookHistograms(DQMStore::IBooker& iBooker, edm::Run const& run, edm::EventSetup const& context) override;
/// Return the top folder
virtual std::string topFolder() const = 0;
/// Analyze
void analyze(const edm::Event& event, const edm::EventSetup& context) override; // final?
bool hasTrigger(std::vector<int>& trigIndices,
const trigger::TriggerObjectCollection& trigObjs,
edm::Handle<trigger::TriggerEvent>& trigEvent,
const reco::Muon& muon);
std::vector<std::vector<unsigned>> m_probeIndices;
std::vector<std::vector<unsigned>> m_tagIndices;
std::map<std::string, MonitorElement*> m_histos;
int m_nEvents;
const edm::EDGetTokenT<reco::MuonCollection> m_muToken;
const double m_borderCut;
const double m_dxCut;
const bool m_detailedAnalysis;
private:
const edm::EDGetTokenT<std::vector<reco::Vertex>> m_primaryVerticesToken;
const edm::EDGetTokenT<edm::TriggerResults> m_triggerResultsToken;
const edm::EDGetTokenT<trigger::TriggerEvent> m_triggerEventToken;
const std::string m_trigName;
HLTConfigProvider m_hltConfig;
//Probe selectors
const StringCutObjectSelector<reco::Candidate, true> m_probeSelector;
const double m_dxyCut;
const double m_dzCut;
//Tag selectors
const StringCutObjectSelector<reco::Muon, true> m_tagSelector;
//Trigger indices
std::vector<int> m_trigIndices;
const double m_lowPairMassCut;
const double m_highPairMassCut;
};
#endif
|