ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/CSCPriEff/interface/TPTrackMuonSys.h
Revision: 1.5
Committed: Tue Jun 11 01:16:49 2013 UTC (11 years, 10 months ago) by zhangjin
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +16 -13 lines
Error occurred while calculating annotation data.
Log Message:
add trackveto_isClosestToLCT: if any other tracks is closer to the LCT in the chamber, value=true

File Contents

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