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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
// -*- C++ -*-
//
// Package: MuonAlignmentAlgorithms
// Class: CSCOverlapsAlignmentAlgorithm
//
/**\class CSCOverlapsAlignmentAlgorithm CSCOverlapsAlignmentAlgorithm.cc Alignment/CSCOverlapsAlignmentAlgorithm/interface/CSCOverlapsAlignmentAlgorithm.h
Description: <one line class summary>
Implementation:
<Notes on implementation>
*/
//
// Original Author: Jim Pivarski,,,
// Created: Tue Oct 7 14:56:49 CDT 2008
// $Id: CSCOverlapsAlignmentAlgorithm.h,v 1.6 2010/09/10 11:56:11 mussgill Exp $
//
//
#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentAlgorithmBase.h"
#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterSelector.h"
#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterStore.h"
#include "Alignment/CommonAlignment/interface/Alignable.h"
#include "Alignment/CommonAlignment/interface/AlignableNavigator.h"
#include "Alignment/CommonAlignment/interface/AlignableObjectId.h"
#include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
#include "Alignment/MuonAlignment/interface/AlignableMuon.h"
#include "Alignment/TrackerAlignment/interface/AlignableTracker.h"
#include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
#include "DataFormats/GeometrySurface/interface/LocalError.h"
#include "DataFormats/MuonDetId/interface/CSCDetId.h"
#include "DataFormats/MuonDetId/interface/MuonSubdetId.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "Geometry/CSCGeometry/interface/CSCGeometry.h"
#include "Geometry/Records/interface/MuonGeometryRecord.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "CommonTools/UtilAlgos/interface/TFileService.h"
#include "TrackingTools/PatternTools/interface/Trajectory.h"
#include "TrackingTools/TrackRefitter/interface/TrackTransformer.h"
#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
#include "TrackingTools/Records/interface/TransientTrackRecord.h"
#include "TrackingTools/TransientTrack/interface/TransientTrack.h"
#include "TrackingTools/GeomPropagators/interface/Propagator.h"
#include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
#include "Alignment/MuonAlignmentAlgorithms/interface/CSCPairConstraint.h"
#include "Alignment/MuonAlignmentAlgorithms/plugins/CSCChamberFitter.h"
#include "Alignment/MuonAlignmentAlgorithms/plugins/CSCAlignmentCorrections.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TProfile.h"
#include "TStyle.h"
#include <sstream>
#include <map>
class CSCOverlapsAlignmentAlgorithm : public AlignmentAlgorithmBase {
public:
CSCOverlapsAlignmentAlgorithm(const edm::ParameterSet &iConfig, edm::ConsumesCollector &);
~CSCOverlapsAlignmentAlgorithm() override;
void initialize(const edm::EventSetup &iSetup,
AlignableTracker *alignableTracker,
AlignableMuon *alignableMuon,
AlignableExtras *alignableExtras,
AlignmentParameterStore *alignmentParameterStore) override;
void run(const edm::EventSetup &iSetup, const EventInfo &eventInfo) override;
void terminate(const edm::EventSetup &iSetup) override;
// having to make read-only accessors for all of these would be ridiculous, so they're public
TH1F *m_hitsPerChamber;
TProfile *m_fiducial_ME11;
TProfile *m_fiducial_ME12;
TProfile *m_fiducial_MEx1;
TProfile *m_fiducial_MEx2;
TH1F *m_slope;
TH1F *m_slope_MEp4;
TH1F *m_slope_MEp3;
TH1F *m_slope_MEp2;
TH1F *m_slope_MEp1;
TH1F *m_slope_MEm1;
TH1F *m_slope_MEm2;
TH1F *m_slope_MEm3;
TH1F *m_slope_MEm4;
TH1F *m_slopeResiduals;
TH1F *m_slopeResiduals_weighted;
TH1F *m_slopeResiduals_normalized;
TH1F *m_offsetResiduals;
TH1F *m_offsetResiduals_weighted;
TH1F *m_offsetResiduals_normalized;
TH1F *m_drdz;
TH2F *m_occupancy;
TH2F *m_XYpos_mep1;
TH2F *m_XYpos_mep2;
TH2F *m_XYpos_mep3;
TH2F *m_XYpos_mep4;
TH2F *m_XYpos_mem1;
TH2F *m_XYpos_mem2;
TH2F *m_XYpos_mem3;
TH2F *m_XYpos_mem4;
TH2F *m_RPhipos_mep1;
TH2F *m_RPhipos_mep2;
TH2F *m_RPhipos_mep3;
TH2F *m_RPhipos_mep4;
TH2F *m_RPhipos_mem1;
TH2F *m_RPhipos_mem2;
TH2F *m_RPhipos_mem3;
TH2F *m_RPhipos_mem4;
int m_mode;
int m_minHitsPerChamber;
double m_maxdrdz;
bool m_fiducial;
bool m_useHitWeights;
bool m_slopeFromTrackRefit;
int m_minStationsInTrackRefits;
double m_truncateSlopeResid;
double m_truncateOffsetResid;
bool m_combineME11;
bool m_useTrackWeights;
bool m_errorFromRMS;
int m_minTracksPerOverlap;
bool m_makeHistograms;
private:
const edm::ESGetToken<CSCGeometry, MuonGeometryRecord> m_cscGeometryToken;
const edm::ESGetToken<Propagator, TrackingComponentsRecord> m_propToken;
const edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> m_tthbToken;
std::string m_mode_string;
std::string m_reportFileName;
double m_minP;
double m_maxRedChi2;
std::string m_writeTemporaryFile;
std::vector<std::string> m_readTemporaryFiles;
bool m_doAlignment;
AlignmentParameterStore *m_alignmentParameterStore;
align::Alignables m_alignables;
AlignableNavigator *m_alignableNavigator;
std::vector<CSCChamberFitter> m_fitters;
std::vector<CSCPairResidualsConstraint *> m_residualsConstraints;
std::map<std::pair<CSCDetId, CSCDetId>, CSCPairResidualsConstraint *> m_quickChamberLookup;
TrackTransformer *m_trackTransformer;
const Propagator *m_propagatorPointer;
TH1F *m_histP10;
TH1F *m_histP100;
TH1F *m_histP1000;
};
|