ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/wangdy/TimingCSC/interface/CSCTimingAnalyzer.h
Revision: 1.9
Committed: Thu Mar 6 11:00:10 2008 UTC (17 years, 1 month ago) by wangdy
Content type: text/plain
Branch: MAIN
Changes since 1.8: +8 -2 lines
Log Message:
add ME4 combinations to make complete for python analysis

File Contents

# User Rev Content
1 wangdy 1.1 /**
2     * @file CSCTimingAnalyzer.h
3     * @author Dayong Wang
4     * @date Fri Dec 1 18:24:39 2006
5     *
6     * @brief Analyzer for extracting CSC timing const.
7     * based on B. Jackson's analyzer by Dayong Wang
8     *
9     */
10 wangdy 1.9 // $Id: CSCTimingAnalyzer.h,v 1.8 2007/12/06 22:25:00 wangdy Exp $
11 wangdy 1.1
12     #ifndef TimingCSC_CSCTimingAnalyzer_h
13     #define TimingCSC_CSCTimingAnalyzer_h
14    
15    
16     #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
17     #include "DataFormats/L1CSCTrackFinder/interface/L1CSCTrackCollection.h"
18    
19     #include <TROOT.h>
20     #include <TFile.h>
21     #include <TCanvas.h>
22     #include <TH1I.h>
23     #include <TH1F.h>
24     #include <TString.h>
25    
26     enum
27     {
28     /// MAX_STATIONS is set to 5 because the subsectors in ME 1 are handled
29     /// as a separate station
30     MAX_STATIONS = 5,
31     MAX_SECTORS = 6,
32     MAX_CHAMBERS = 9
33     };
34    
35     const TString stationLabel[MAX_STATIONS] = {"1a","1b","2","3","4"};
36 wangdy 1.8 const TString sectorLabel[12] = {"1","2","3","4","5","6", "7","8","9","10","11","12"};
37 wangdy 1.1 const TString chamberLabel[MAX_CHAMBERS] = {"1","2","3","4","5","6","7","8","9"};
38 wangdy 1.5 const int MINSEC=0;
39 wangdy 1.9 const int MAXSEC=6;
40 wangdy 1.6 const int TIMINGSEC=3; // this only works for naive estimation now
41 wangdy 1.7 const int BX_START=3; // starting of hBX: 3 for MC and 0 for data
42 wangdy 1.1
43     class CSCTriggerMappingFromFile;
44    
45     class CSCTimingAnalyzer : public edm::EDAnalyzer
46     {
47     public:
48    
49     explicit CSCTimingAnalyzer(edm::ParameterSet const& conf);
50     ~CSCTimingAnalyzer();
51    
52     virtual void beginJob(const edm::EventSetup&);
53     virtual void endJob();
54     virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup);
55    
56     private:
57    
58 wangdy 1.8 void initializeHistograms();
59 wangdy 1.1 void fillHistograms(edm::Handle<CSCCorrelatedLCTDigiCollection> corrlcts,
60     edm::Handle<L1CSCTrackCollection> tracks);
61    
62     void timingExtract();
63     void initializeCanvases();
64     void fillCanvases();
65     void printCanvases();
66    
67     void deleteRootObjects();
68     void deleteHistograms();
69     void deleteCanvases();
70    
71     bool testBeam;
72     int TBFEDid, TBendcap, TBsector;
73     std::string mapPath;
74     CSCTriggerMappingFromFile* TFMapping;
75     int eventNumber;
76    
77     /* std::string day; */
78 wangdy 1.5 edm::InputTag lctProducer, trackProducer;
79    
80 wangdy 1.1 std::string run;
81     std::string outFile;
82     std::string timeFile;
83    
84     /// Root Objects
85    
86     /// File to store the generated hisograms
87     TFile* fAnalysis;
88    
89     /// for output of const and error
90     TFile* fTimingConst;
91    
92 wangdy 1.8 TH1I* hBX[12][MAX_STATIONS][MAX_CHAMBERS];
93 wangdy 1.1 TH1I* hNumTracksPerEvent;
94     TH1F* hTimingConstDirect;
95     TH1F* hTimingConstA;
96     TH1F* hTimingConstB;
97     TH1F* hTimingComp;
98     /// Arrays of histograms that contains the strip difference between
99     /// LCTs in adjacent CSCs within the same event
100     ///
101     /// MAX_CHAMBERS-2 because there are that many boundaries between CSCs to
102     /// account for in ME 234. In ME 1 there will be unused plots
103 wangdy 1.8 TH1I* hBXDifference[12][MAX_STATIONS][MAX_CHAMBERS-2];
104 wangdy 1.1
105     /// BX difference between station 2 and 3
106     /// overlapping cscs in ME 2 and 3
107 wangdy 1.8 TH1I* hBXDifference23Overlap[12][MAX_CHAMBERS];
108 wangdy 1.1 /// crossing cscs in ME 2 and 3
109 wangdy 1.8 TH1I* hBXDifference23Cross[12][2*MAX_CHAMBERS-4];
110 wangdy 1.1 /// non overlapping cscs in ME 2 and 3
111 wangdy 1.8 TH1I* hBXDifference23NonOverlap[12][MAX_CHAMBERS-3];
112 wangdy 1.1 /// require "forward" muons
113    
114     /// BX difference between stations 1A and 2
115     /// ME 1A ring 1
116 wangdy 1.8 TH1I* hBXDifference1AR12[12][MAX_CHAMBERS-3];
117 wangdy 1.1 /// ME 1A ring 2/3
118 wangdy 1.8 TH1I* hBXDifference1AR232[12][MAX_CHAMBERS-3];
119 wangdy 1.1
120     /// BX difference between stations 1B and 2
121     /// ME 1B ring 1
122 wangdy 1.8 TH1I* hBXDifference1BR12[12][MAX_CHAMBERS-3];
123 wangdy 1.1 /// ME 1B ring 2/3
124 wangdy 1.8 TH1I* hBXDifference1BR232[12][MAX_CHAMBERS-3];
125 wangdy 1.1
126 wangdy 1.4 /// BX difference within different rings in stations 1A
127     /// R1-R2
128 wangdy 1.8 TH1I* hBXDifference1AInR1R2[12][7];
129 wangdy 1.4 /// R1-R3
130 wangdy 1.8 TH1I* hBXDifference1AInR1R3[12][7];
131 wangdy 1.4
132     /// BX difference within different rings in stations 1B
133     /// R1-R2
134 wangdy 1.8 TH1I* hBXDifference1BInR1R2[12][7];
135 wangdy 1.4 /// R1-R3
136 wangdy 1.8 TH1I* hBXDifference1BInR1R3[12][7];
137 wangdy 1.1
138 wangdy 1.4 /// BX difference within stations 1A abd 1B
139 wangdy 1.8 TH1I* hBXDifference1AWith1B[12][7];
140 wangdy 1.4
141    
142 wangdy 1.9 /// BX difference between station 3 and 4
143     /// overlapping cscs in ME 3 and 4
144     TH1I* hBXDifference34Overlap[12][MAX_CHAMBERS];
145     /// crossing cscs in ME 3 and 4
146     TH1I* hBXDifference34Cross[12][4];
147    
148 wangdy 1.4
149 wangdy 1.1 /// Canvases to display the histograms once they are filled
150    
151 wangdy 1.8 TCanvas* cBX[12][MAX_STATIONS];
152 wangdy 1.1 TCanvas* cNumTracksPerEvent;
153     TCanvas* cTimingConstA;
154     TCanvas* cTimingConstB;
155     TCanvas* cTimingConstDirect;
156     TCanvas* cTimingComp;
157    
158 wangdy 1.8 TCanvas* cBXDifference[12][MAX_STATIONS];
159 wangdy 1.1
160     /// Canvases for printing BX Difference between station 2 and 3
161     /// Overlapping cscs in stations 2 and 3
162 wangdy 1.8 TCanvas* cBXDifference23Overlap[12];
163 wangdy 1.1 /// Crossing cscs in stations 2 and 3
164 wangdy 1.8 TCanvas* cBXDifference23Cross[12];
165 wangdy 1.1 /// Non-overlapping cscs in stations 2 and 3
166 wangdy 1.8 TCanvas* cBXDifference23NonOverlap[12];
167 wangdy 1.1 /// Canvases for printing BX differences between station 1A and 2
168     /// ME 1A ring 1
169 wangdy 1.8 TCanvas* cBXDifference1AR12[12];
170 wangdy 1.1 /// ME 1A ring 2/3
171 wangdy 1.8 TCanvas* cBXDifference1AR232[12];
172 wangdy 1.1
173     /// Canvases for printing BX differences between station 1B and 2
174     /// ME 1B ring 1
175 wangdy 1.8 TCanvas* cBXDifference1BR12[12];
176 wangdy 1.1 /// ME 1B ring 2/3
177 wangdy 1.8 TCanvas* cBXDifference1BR232[12];
178 wangdy 1.1
179 wangdy 1.4 /// Canvases for printing BX differences within station 1A
180     /// R1R2
181 wangdy 1.8 TCanvas* cBXDifference1AInR1R2[12];
182 wangdy 1.4 /// R1R3
183 wangdy 1.8 TCanvas* cBXDifference1AInR1R3[12];
184 wangdy 1.4
185     /// Canvases for printing BX differences within station 1B
186     /// R1R2
187 wangdy 1.8 TCanvas* cBXDifference1BInR1R2[12];
188 wangdy 1.4 /// R1R3
189 wangdy 1.8 TCanvas* cBXDifference1BInR1R3[12];
190 wangdy 1.4
191     /// Canvases for printing BX differences of station 1A and 1B
192 wangdy 1.8 TCanvas* cBXDifference1AWith1B[12];
193 wangdy 1.4
194    
195 wangdy 1.1 };
196    
197     #endif