1 |
#ifndef RPhysicsStudies_TPTrackMuonSys_H
|
2 |
#define RPhysicsStudies_TPTrackMuonSys_H
|
3 |
|
4 |
/** \class TPTrackMuonSys
|
5 |
* Author : Chaouki Boulahouache, Jinzhong Zhang
|
6 |
* Intitute: Rice University, Northeastern University
|
7 |
*
|
8 |
* Package: TPTrackMuonSys
|
9 |
*/
|
10 |
|
11 |
//#define GetCSCHitsBefore500
|
12 |
//#define GetPUFromEarlierThan_4_1_2
|
13 |
//#define GetPUFromEarlierThan_4_4_0
|
14 |
#define TrackingParticles
|
15 |
//#define m_debug
|
16 |
//#define jz_debug
|
17 |
// system include files
|
18 |
#include <memory>
|
19 |
#include <iostream>
|
20 |
#include <vector>
|
21 |
#include <map>
|
22 |
#include <string>
|
23 |
#include <iomanip>
|
24 |
#include <fstream>
|
25 |
#include <TCanvas.h>
|
26 |
#include <TH2F.h>
|
27 |
// user include files
|
28 |
// Framework...
|
29 |
#include "FWCore/Framework/interface/EDAnalyzer.h"
|
30 |
#include "FWCore/Framework/interface/Event.h"
|
31 |
#include "FWCore/ParameterSet/interface/ParameterSet.h"
|
32 |
#include "FWCore/Utilities/interface/InputTag.h"
|
33 |
#include "FWCore/Framework/interface/EDAnalyzer.h"
|
34 |
#include "FWCore/Framework/interface/EventSetup.h"
|
35 |
#include "FWCore/Framework/interface/ESHandle.h"
|
36 |
#include "FWCore/MessageLogger/interface/MessageLogger.h"
|
37 |
|
38 |
/*Math*/
|
39 |
#include "DataFormats/Math/interface/deltaR.h"
|
40 |
#include "DataFormats/Math/interface/deltaPhi.h"
|
41 |
#include "CommonTools/Statistics/interface/ChiSquaredProbability.h"
|
42 |
#include "DataFormats/Math/interface/Point3D.h"
|
43 |
/*Geometry*/
|
44 |
#include "DataFormats/MuonDetId/interface/CSCDetId.h"
|
45 |
#include "DataFormats/MuonDetId/interface/CSCIndexer.h"
|
46 |
#include "Geometry/CSCGeometry/interface/CSCGeometry.h"
|
47 |
#include "Geometry/CSCGeometry/interface/CSCChamber.h"
|
48 |
#include "Geometry/CSCGeometry/interface/CSCLayer.h"
|
49 |
#include "Geometry/CSCGeometry/interface/CSCLayerGeometry.h"
|
50 |
#include "DataFormats/GeometrySurface/interface/Cylinder.h"
|
51 |
|
52 |
/*Bad Chambers*/
|
53 |
#include "CalibMuon/CSCCalibration/interface/CSCConditions.h"
|
54 |
#include "CondFormats/CSCObjects/interface/CSCBadChambers.h"
|
55 |
#include "CondFormats/DataRecord/interface/CSCBadChambersRcd.h"
|
56 |
|
57 |
/*CSC-LCT*/
|
58 |
#include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h"
|
59 |
#include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
|
60 |
#include "L1Trigger/CSCTrackFinder/interface/CSCSectorReceiverLUT.h"
|
61 |
#include "DataFormats/MuonDetId/interface/CSCTriggerNumbering.h"
|
62 |
|
63 |
//Global Triggers
|
64 |
#include "DataFormats/HLTReco/interface/TriggerObject.h"
|
65 |
#include "DataFormats/Common/interface/TriggerResults.h"
|
66 |
#include "FWCore/Common/interface/TriggerNames.h"
|
67 |
#include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
|
68 |
#include "CondFormats/L1TObjects/interface/L1GtTriggerMenuFwd.h"
|
69 |
#include "CondFormats/L1TObjects/interface/L1GtTriggerMenu.h"
|
70 |
#include "CondFormats/DataRecord/interface/L1GtTriggerMenuRcd.h"
|
71 |
#include "CondFormats/DataRecord/interface/L1MuTriggerScalesRcd.h"
|
72 |
#include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
|
73 |
#include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h"
|
74 |
#include "CondFormats/L1TObjects/interface/L1MuTriggerScales.h"
|
75 |
#include "DataFormats/HLTReco/interface/TriggerEvent.h"
|
76 |
|
77 |
//Beamspot
|
78 |
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
|
79 |
|
80 |
// Tracks...
|
81 |
#include "DataFormats/TrackReco/interface/Track.h" // reconstructed tracks that are stored in the AOD and RECO.
|
82 |
#include "DataFormats/TrackReco/interface/TrackFwd.h"
|
83 |
#include "DataFormats/TrackReco/interface/DeDxData.h"
|
84 |
#include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractor.h"//isolation
|
85 |
#include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractorFactory.h"
|
86 |
//Track-detector associator
|
87 |
#include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
|
88 |
|
89 |
// Vertices...
|
90 |
#include "DataFormats/VertexReco/interface/Vertex.h"
|
91 |
#include "DataFormats/VertexReco/interface/VertexFwd.h"
|
92 |
|
93 |
// Muons...
|
94 |
#include "DataFormats/MuonReco/interface/MuonFwd.h"
|
95 |
#include "DataFormats/MuonReco/interface/MuonSelectors.h"
|
96 |
|
97 |
//MC truth information
|
98 |
#include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"
|
99 |
#include "SimDataFormats/PileupSummaryInfo/interface/PileupSummaryInfo.h"
|
100 |
//Tracking Particles, Match to simulations/generation level particles
|
101 |
#ifdef TrackingParticles
|
102 |
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
|
103 |
#include "SimDataFormats/TrackingAnalysis/interface/TrackingVertexContainer.h"
|
104 |
#include "DataFormats/RecoCandidate/interface/TrackAssociation.h"
|
105 |
#include "SimTracker/Records/interface/TrackAssociatorRecord.h"
|
106 |
#include "SimTracker/TrackAssociation/interface/TrackAssociatorBase.h"
|
107 |
#include "SimMuon/MCTruth/interface/MuonAssociatorByHits.h"
|
108 |
//SimTracks
|
109 |
#include "SimDataFormats/Track/interface/SimTrackContainer.h"
|
110 |
//SimVertex
|
111 |
#include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
|
112 |
#else
|
113 |
#include "DataFormats/HepMCCandidate/interface/GenParticle.h"
|
114 |
#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
|
115 |
#endif
|
116 |
|
117 |
#include <vector>
|
118 |
#include <string.h>
|
119 |
#include <iostream>
|
120 |
|
121 |
#include "TVector3.h"
|
122 |
#include "TH1F.h"
|
123 |
#include "TH2F.h"
|
124 |
#include "TFile.h"
|
125 |
#include "TString.h"
|
126 |
#include "TTree.h"
|
127 |
|
128 |
using namespace std;
|
129 |
using namespace edm;
|
130 |
using namespace reco;
|
131 |
|
132 |
#define MAXNTRACKS 1500
|
133 |
|
134 |
//Chambers positions 1/1,4 1/2 1/3 2/1,2 3/1,2 4/1,2
|
135 |
//const Float_t MEZOdd[6] ={615.95, 711.76, 694.16, 839.96, 924.04, 1013.5}; // 839.96
|
136 |
//const Float_t MEZEven[6] ={586.65, 684.36, 694.16, 815.16, 948.84, 1038.3}; // 839.96
|
137 |
const Float_t MEZ[6] ={601.3, 696.11, 696.11, 827.56, 936.44, 1025.9}; // 839.96
|
138 |
|
139 |
class TPTrackMuonSys : public edm::EDAnalyzer {
|
140 |
public:
|
141 |
enum ParticleType {LightMeson=1,CharmedMeson=2,ccbarMeson=3,BottomMeson=4,bbarMeson=5,LightBaryon=6,CharmedBaryon=7,BottomBaryon=8,DiQuarks=9,Lepton=10,W=11,Z=12,Muon=13,JPsi=14,Other=15};
|
142 |
enum TheTrackType {PromptMuFromW=10,PromptMuFromZ=11,PromptMuFromJPsi=12,PromptMuFromLightMeson=13,PromptMuFromHeavyMeson=14,PromptMuFromLightBaryon=15,PromptMuFromHeavyBaryon=16,NotPromptMufromWZ=17,PromptMuFromOthers=18,PunchThrough=20,PunchThroughAndDecayInFlight=21,DecayInFlightFromLightMeson=31,DecayInFlightFromHeavyMeson=32,DecayInFlightFromLightBaryon=33,DecayInFlightFromHeavyBaryon=34,NoMuSysHit=40,Others=01,NothingMatched=00};
|
143 |
/// Constructor
|
144 |
TPTrackMuonSys(const edm::ParameterSet& pset);
|
145 |
|
146 |
/// Destructor
|
147 |
virtual ~TPTrackMuonSys();
|
148 |
|
149 |
protected:
|
150 |
private:
|
151 |
virtual void beginJob() ;
|
152 |
virtual void beginRun(const Run& r, const EventSetup& iSet);
|
153 |
virtual void analyze(const edm::Event&, const edm::EventSetup&);
|
154 |
virtual void endJob() ;
|
155 |
|
156 |
TrajectoryStateOnSurface cylExtrapTrkSam(reco::TrackRef track, double rho);
|
157 |
TrajectoryStateOnSurface surfExtrapTrkSam(reco::TrackRef track, double z);
|
158 |
FreeTrajectoryState freeTrajStateMuon(reco::TrackRef track);
|
159 |
|
160 |
struct MCParticleInfo
|
161 |
{
|
162 |
Bool_t IsThisFromSimTrk,IsParticleFromGenerator,DoesParticleHaveMuonHit,IsParticleBornInsideOfARegion,IsPileup;
|
163 |
Int_t pdgId;
|
164 |
};
|
165 |
|
166 |
MCParticleInfo MCParticleInfo_Creator( const SimTrack * thisTrk, TrackingParticleRef tpr );
|
167 |
MCParticleInfo MCParticleInfo_Creator( HepMC::GenParticle * GenParticle ) {
|
168 |
MCParticleInfo TBA;
|
169 |
TBA.IsThisFromSimTrk=false;
|
170 |
TBA.IsParticleFromGenerator=true; TBA.DoesParticleHaveMuonHit=false;
|
171 |
TBA.IsParticleBornInsideOfARegion=true; TBA.IsPileup=false;
|
172 |
TBA.pdgId=GenParticle->pdg_id();
|
173 |
return TBA;
|
174 |
}
|
175 |
|
176 |
vector<SimVertex> SVC;
|
177 |
vector< MCParticleInfo > MCParticlesList;
|
178 |
vector<Int_t> DChain;
|
179 |
vector< vector<Int_t> > SimChains;
|
180 |
vector< vector<Int_t> > HepMCChains;
|
181 |
vector<const SimTrack *> SavedSimTrk;
|
182 |
vector<HepMC::GenParticle *> SavedHepPar;
|
183 |
|
184 |
inline Int_t FindSimTrackInMCParticlesList( Int_t PosInSimTrackVec ) {
|
185 |
Int_t count=0;
|
186 |
vector<MCParticleInfo>::const_iterator MCParticlesList_iter = MCParticlesList.begin();
|
187 |
for (; MCParticlesList_iter != MCParticlesList.end(); MCParticlesList_iter++ )
|
188 |
if ( MCParticlesList_iter->IsThisFromSimTrk ) {
|
189 |
if (count==PosInSimTrackVec) break;
|
190 |
else count++;
|
191 |
}
|
192 |
return MCParticlesList_iter-MCParticlesList.begin();
|
193 |
}
|
194 |
|
195 |
inline Int_t FindHepMCInMCParticlesList( Int_t PosInHepMCVec ) {
|
196 |
Int_t count=0;
|
197 |
vector<MCParticleInfo>::const_iterator MCParticlesList_iter = MCParticlesList.begin();
|
198 |
for (; MCParticlesList_iter != MCParticlesList.end(); MCParticlesList_iter++ )
|
199 |
if ( !MCParticlesList_iter->IsThisFromSimTrk ) {
|
200 |
if (count==PosInHepMCVec) break;
|
201 |
else count++;
|
202 |
}
|
203 |
return MCParticlesList_iter-MCParticlesList.begin();
|
204 |
}
|
205 |
|
206 |
Bool_t GetDecayChains(TrackingParticleRef tpr, HepMC::GenEvent *HepGenEvent, ULong64_t &type, Int_t &truth_thesamewith, vector<vector< vector<Int_t> > > & SimChains);
|
207 |
void SimTrackDaughtersTree(const SimTrack * thisTrk, TrackingParticleRef tpr);
|
208 |
void HepMCParentTree(HepMC::GenParticle *genPar);
|
209 |
inline ParticleType ParticleCata(Int_t pid);
|
210 |
Bool_t SaveAndClassify(vector<Int_t> &Chain, vector<TheTrackType> &types, Int_t & truth_thesamewith, vector<vector< vector<Int_t> > > & SimChains);
|
211 |
TheTrackType Classify(vector<Int_t> &Chain);
|
212 |
Bool_t IstheSameDChain(const vector<Int_t> &Chain1,const vector<Int_t> &Chain2);
|
213 |
|
214 |
CSCConditions theDbConditions;
|
215 |
HLTConfigProvider hltConfigProvider_;
|
216 |
|
217 |
void chamberCandidates(Int_t station, Float_t feta, Float_t phi, std::vector <int> &coupleOfChambers);
|
218 |
Int_t ringCandidate(Int_t station, Float_t feta, Float_t phi);
|
219 |
void fillChamberPosition();
|
220 |
Short_t thisChamberCandidate(Short_t station, Short_t ring, Float_t phi);
|
221 |
|
222 |
///// Functions needed...
|
223 |
void getCSCSegWkeyHalfStrip(const std::vector<CSCRecHit2D> &theseRecHits, Float_t &cStrp, Float_t &ckWG);
|
224 |
|
225 |
Float_t YDistToHVDeadZone(Float_t yLocal, Int_t StationAndRing);
|
226 |
|
227 |
vector<Float_t> GetEdgeAndDistToGap(reco::TrackRef trackRef, CSCDetId & detid);
|
228 |
|
229 |
reco::MuonCollection::const_iterator matchTTwithMT(reco::TrackCollection::const_iterator &itrack);
|
230 |
|
231 |
bool matchTTwithCSCRecHit(bool trackDir,
|
232 |
Int_t j,
|
233 |
reco::TrackRef trackRef,
|
234 |
edm::Handle<CSCRecHit2DCollection> recHits,
|
235 |
//std::vector<CSCRecHit2DCollection> recHitOut,
|
236 |
std::vector<CSCRecHit2D> &recHitOut,
|
237 |
std::vector<Int_t > &deltaRecHitX,
|
238 |
std::vector<Int_t > &deltaRecHitY);
|
239 |
|
240 |
|
241 |
bool matchTTwithRPCEChit(bool trackDir,
|
242 |
Int_t j,
|
243 |
reco::TrackRef trackRef,
|
244 |
edm::Handle<RPCRecHitCollection> rpcRecHits,
|
245 |
RPCRecHitCollection::const_iterator &rpcHitOut);
|
246 |
|
247 |
inline Float_t TrajectoryDistToSeg( TrajectoryStateOnSurface *TrajSuf, CSCSegmentCollection::const_iterator segIt);
|
248 |
|
249 |
TrajectoryStateOnSurface* matchTTwithCSCSeg( reco::TrackRef trackRef, edm::Handle<CSCSegmentCollection> cscSegments,
|
250 |
CSCSegmentCollection::const_iterator &cscSegOut, CSCDetId & idCSC );
|
251 |
|
252 |
Bool_t matchTTwithCSCSeg(Bool_t trackDir, Int_t j, reco::TrackRef trackRef, edm::Handle<CSCSegmentCollection> cscSegments,
|
253 |
CSCSegmentCollection::const_iterator &cscSegOut );
|
254 |
|
255 |
|
256 |
Bool_t matchCSCSegWithLCT(edm::Handle<CSCCorrelatedLCTDigiCollection> mpclcts,
|
257 |
CSCDetId & idCSC,
|
258 |
Int_t TT,
|
259 |
Float_t TrkPhi, Float_t TrkEta,
|
260 |
Float_t c1, Float_t w1,
|
261 |
CSCCorrelatedLCTDigiCollection::const_iterator &mpcItOut,
|
262 |
CSCCorrelatedLCTDigiCollection::const_iterator &mpcHsWkOut,
|
263 |
Bool_t *xMatch,
|
264 |
Float_t *mDAngle,
|
265 |
Float_t *diffTrkEta,
|
266 |
Float_t *diffTrkPhi,
|
267 |
Float_t *delHStrp,
|
268 |
Float_t *delWkey
|
269 |
);
|
270 |
|
271 |
LocalPoint * matchTTwithLCTs(Float_t xPos, Float_t yPos, Short_t ec, Short_t st, Short_t rg, Short_t cham,
|
272 |
edm::Handle<CSCCorrelatedLCTDigiCollection> mpclcts, Float_t &dRTrkLCT, Int_t &lctBX );
|
273 |
|
274 |
Int_t getNLayerMatchedCSCSeg(CSCSegmentCollection::const_iterator &cscSegMatch,
|
275 |
edm::Handle<CSCRecHit2DCollection> recHits,
|
276 |
Float_t *delRecSegX,
|
277 |
Float_t *delRecSegY,
|
278 |
Int_t &nGHits);
|
279 |
|
280 |
CSCSectorReceiverLUT *srLUTs_[2][6][5];
|
281 |
const L1MuTriggerScales* theTriggerScales;
|
282 |
|
283 |
edm::Handle<CSCSegmentCollection> cscSegments;
|
284 |
edm::Handle<reco::MuonCollection> muons;
|
285 |
edm::ESHandle<MagneticField> theBField;
|
286 |
edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry;
|
287 |
// DT Geometry
|
288 |
edm::ESHandle<DTGeometry> dtGeom;
|
289 |
edm::ESHandle<RPCGeometry> rpcGeo;
|
290 |
// CSC Geometry
|
291 |
edm::ESHandle<CSCGeometry> cscGeom;
|
292 |
|
293 |
// Extrapolator to cylinder
|
294 |
edm::ESHandle<Propagator> propagatorAlong;
|
295 |
edm::ESHandle<Propagator> propagatorOpposite;
|
296 |
edm::ParameterSet trackExtractorPSet_;
|
297 |
// counters
|
298 |
Int_t nEventsAnalyzed;
|
299 |
Int_t treeCount;
|
300 |
|
301 |
Float_t StationOnePhi[36];
|
302 |
Float_t StationTwoOnePhi[18], StationTwoTwoPhi[36];
|
303 |
Float_t StationThreeOnePhi[18], StationThreeTwoPhi[36];
|
304 |
Float_t StationFourOnePhi[18], StationFourTwoPhi[36];
|
305 |
|
306 |
|
307 |
unsigned long long etime;
|
308 |
Int_t bunchX, orbitNumb, expType, LumiBlock;
|
309 |
//
|
310 |
// The root file for the histograms.
|
311 |
//
|
312 |
TFile *theFile;
|
313 |
|
314 |
//
|
315 |
// General input parameters
|
316 |
//
|
317 |
std::string m_rootFileName, m_refRootFile, m_hltSingleMuTriName, m_hltDoubleMuTriName;
|
318 |
double m_cellThreshold;
|
319 |
// Steering parameters...
|
320 |
edm::InputTag m_beamSpot;
|
321 |
Bool_t m_isMC, m_doTrigger, m_doTrack, m_doMuon, m_doElectron, m_doEIDAndIso, m_doPhoton, m_doGenPart;
|
322 |
Bool_t m_doTau, m_doJet, m_doBJet, m_doMET, m_doCaloTiming, m_doIslandHybrid;
|
323 |
edm::InputTag m_gTracksTag, m_fitTracksTag, m_electronTag, m_muonTag, m_photonTag, m_mcTag;
|
324 |
edm::InputTag m_jet0Tag, m_jet1Tag, m_jet2Tag, m_jet3Tag, m_jet4Tag, m_jet5Tag, m_jet6Tag;
|
325 |
edm::InputTag m_trujet0Tag, m_trujet1Tag, m_trujet2Tag, m_trujet3Tag, m_trujet4Tag, m_trujet5Tag, m_trujet6Tag, m_vertexSrc, m_dEdxDiscrimTag;
|
326 |
edm::InputTag m_HepMCTag;
|
327 |
edm::InputTag trackProducer;
|
328 |
edm::InputTag m_hlt, m_hltTrgEv, m_L1extraTag;
|
329 |
vector<Int_t> m_HLTMuTrgBit;
|
330 |
Int_t m_HLTDiMuTrgBit;
|
331 |
vector<string> m_HLTMuTrgNames;
|
332 |
string m_HLTDiMuTrgName;
|
333 |
|
334 |
//badchambers
|
335 |
edm::ESHandle<CSCBadChambers> pBad;
|
336 |
CSCBadChambers* badChambers_;
|
337 |
|
338 |
/// Ntuple variables
|
339 |
TTree *fractNtuple, *RunInfo;
|
340 |
//HLT
|
341 |
vector<string> *HLTMuNames,*HLTMuObjModuleNames;
|
342 |
string *HLTTableName, *HLTDiMuName, *HLTDiMuObjModuleName;
|
343 |
vector<Int_t> *badChambersIndices;
|
344 |
vector<Bool_t> *HLTMuAcceptance;
|
345 |
Bool_t HLTDiMuAcceptance,trgSingle;
|
346 |
vector<Float_t> *minDRHLTMu;
|
347 |
Float_t minDRHLTAllSingleMu,minDRHLTDiMu;
|
348 |
|
349 |
// for general information
|
350 |
Int_t isItMC, run_number, event_number;
|
351 |
Float_t mcweight;
|
352 |
UInt_t numberOfPUVertices; // the number of pileup interactions that have been added to the event from BX=0
|
353 |
Float_t numberOfPUVerticesMixingTruth;// the "MixingTruth" mean number of pileup interactions for this event from which each bunch crossing has been sampled; same for all bunch crossings in an event (before possion smearing); in fact BX=-1, this value is zero, it's a bug I believe.
|
354 |
UInt_t numberOfPUVerticesTot; // all PX : BX=0 and out-of-time PU
|
355 |
UInt_t numberOfPrimaryVertices ;
|
356 |
//// for track information
|
357 |
//
|
358 |
Float_t tracks_ecalCrossedE, tracks_ecal3E, tracks_ecal5E, tracks_ecal3EMax, tracks_ecal5EMax;
|
359 |
Float_t tracks_ecalTrueE, tracks_trkPosAtEcalEta, tracks_trkPosAtEcalPhi, tracks_ecalMaxPosEta, tracks_ecalMaxPosPhi;
|
360 |
Float_t tracks_hcalCrossedE, tracks_hcal3E, tracks_hcal5E, tracks_hcal3EMax, tracks_hcal5EMax;
|
361 |
Float_t tracks_hcalTrueE, tracks_trkPosAtHcalEta, tracks_trkPosAtHcalPhi, tracks_hcalMaxPosEta, tracks_hcalMaxPosPhi;
|
362 |
Float_t tracks_hcalTrueECorrected;
|
363 |
Float_t tracktruth_pt, tracktruth_e, tracktruth_p, tracktruth_id;
|
364 |
Bool_t tracktruth_isPileup;
|
365 |
ULong64_t tracktruth_type;
|
366 |
Int_t tracktruth_thesamewith;
|
367 |
TrackAssociatorParameters parameters_;
|
368 |
TrackDetectorAssociator trackAssociator_;
|
369 |
|
370 |
// Tracks
|
371 |
Int_t tracks_algo, tracks_charge, tracks_numberOfValidHits, tracks_algN, tracks_numberOfLostHits, tracks_recHitsSize;
|
372 |
Float_t tracks_id, tracks_chi2, tracks_e;
|
373 |
Float_t tracks_px, tracks_py, tracks_pz, tracks_pt;
|
374 |
Float_t tracks_eta, tracks_phi, tracks_dxy, tracks_d0, tracks_dsz, tracks_dz;
|
375 |
Float_t tracks_vx, tracks_vy, tracks_vz, tracks_ndof;
|
376 |
Float_t tracks_qoverp, tracks_lambda, tracks_quality;
|
377 |
Float_t tracks_IsoR03Ratio,tracks_IsoR05Ratio;//ratio of track pT
|
378 |
Float_t tracks_qoverpError, tracks_ptError, tracks_thetaError, tracks_lambdaError;
|
379 |
Float_t tracks_etaError, tracks_phiError, tracks_dxyError, tracks_d0Error , tracks_dszError;
|
380 |
Float_t tracks_dzError;
|
381 |
Bool_t tracks_isCaloMuTrk,tracks_isTrackerMuTrk,trackVeto;
|
382 |
|
383 |
Int_t nPosTrk, nNegTrk, nTotalTrks;
|
384 |
///
|
385 |
Int_t myRegion;// 1-DT, 2-DT&CSC 3-CSC;
|
386 |
|
387 |
Int_t mpc_endcap, mpc_ring, mpc_station, mpc_chamber;
|
388 |
Int_t mpc_triggerSector, mpc_triggerCscId, mpc_trknmb, mpc_quality, mpc_bX, mpc_bX0, mpc_strip;
|
389 |
Int_t mpc_pattern, mpc_bend, mpc_keyWG, mpc_syncErr, mpc_cscID, mpc_mpcLink;
|
390 |
Float_t trkPhiScale, trkEtaScale, minDAngle, CSCSegMPCMatch, minPhi;
|
391 |
|
392 |
Float_t muon_px, muon_py, muon_pz, muon_pt, muon_e, muon_eta, muon_phi, muon_charge, dRMU;
|
393 |
Float_t muon_nChambers, muon_nChambersMSeg;
|
394 |
Int_t muon_id, motherID;
|
395 |
|
396 |
Float_t centerStrp, centerkWG;
|
397 |
Int_t lctMatch1, lctMatch2, TTcase;
|
398 |
Float_t lctPhiDiff1, lctEtaDiff1, lctDelHStrp1, lctDelWkey1;
|
399 |
Float_t lctPhiDiff2, lctEtaDiff2, lctDelHStrp2, lctDelWkey2;
|
400 |
|
401 |
Float_t MuTagPx, MuTagPy, MuTagPz, MuProbePx, MuProbePy, MuProbePz;
|
402 |
Int_t MuTagHitsMuSys, MuTagHitsTrkSys;
|
403 |
Float_t MuTagE, MuProbeE;
|
404 |
Float_t MuTagPhiProj1, MuTagEtaProj1, MuTagPhiProj2, MuTagEtaProj2;
|
405 |
Float_t MuTagIsoR03Ratio,MuTagIsoR05Ratio;//ratio of muon pT
|
406 |
Float_t MuTagtracktruth_pt, MuTagtracktruth_p, MuTagtracktruth_id;
|
407 |
Bool_t MuTagtracktruth_isPileup;
|
408 |
ULong64_t MuTagtracktruth_type;
|
409 |
Int_t MuTagtracktruth_thesamewith;
|
410 |
|
411 |
/// For the ntuples..
|
412 |
//
|
413 |
Bool_t MuTagCaloL, MuTagCaloT, iSameVtx;
|
414 |
|
415 |
Int_t mu_found, MuProbenHitsMuSys, MuProbenHitsTrkSys, MuProbenHitsPixSys;
|
416 |
Int_t MuTagPromt, MuTagnSegTrkArb, MuProbeCharge;
|
417 |
Float_t MuProbePt, MuProbeEta, MuProbePhi, MuTagPt, MuTagEta, MuTagPhi, invMass, deltaRTrkMu;
|
418 |
Float_t vtx_r, vtx_z, vtx_rError, vtx_zError, vtx_normChi2;
|
419 |
Int_t vtx_size, igSameVtx;
|
420 |
|
421 |
Int_t nTrkCountCSCSeg;
|
422 |
/*CSC Chamber Candidates in each station*/
|
423 |
Bool_t CSCEndCapPlus;
|
424 |
Short_t CSCRg[4],CSCChCand[4];
|
425 |
Bool_t CSCChBad[4];
|
426 |
|
427 |
/*Extrapolated Tracks on CSC Chamber Candidates in each station*/
|
428 |
Float_t CSCDyProjHVGap[4],CSCDyErrProjHVGap[4],CSCProjEdgeDist[4],CSCProjEdgeDistErr[4];//note: there is no so-called extrapolated track position on CSC chambers, because you need to know which layer.
|
429 |
|
430 |
/*Segments characteristics*/
|
431 |
Float_t CSCSegxLc[4],CSCSegyLc[4],CSCSegxErrLc[4],CSCSegyErrLc[4],CSCSegChisqProb[4],CSCdXdZTTSeg[4],CSCdYdZTTSeg[4];
|
432 |
Int_t CSCnSegHits[4];
|
433 |
|
434 |
/*Distance from the Extrapolated Tracks to CSC Segments, 99999. for no CSC segment found*/
|
435 |
Float_t CSCDxyTTSeg[4],CSCDxTTSeg[4],CSCDyTTSeg[4],CSCDxyErrTTSeg[4];
|
436 |
|
437 |
/*LCT characteristics*/
|
438 |
Float_t CSCLCTxLc[4],CSCLCTyLc[4];
|
439 |
Int_t CSCLCTbx[4];
|
440 |
|
441 |
/*Distance from the Extrapolated Tracks to LCT, 99999. for no LCT found*/
|
442 |
Float_t CSCDxyTTLCT[4],CSCDxTTLCT[4],CSCDyTTLCT[4],CSCDxyErrTTLCT[4];
|
443 |
|
444 |
/*DetlaR between the extrapolated tracker track on muon system and the tagged muon*/
|
445 |
Float_t dRTkMu[4];
|
446 |
/*Default decision of whether a segment or LCT is found*/
|
447 |
Int_t segSt[4],lctSt[4];
|
448 |
};
|
449 |
#endif
|