ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/CSCPriEff/interface/TPTrackMuonSys.h
Revision: 1.1
Committed: Thu Dec 20 00:53:09 2012 UTC (12 years, 4 months ago) by zhangjin
Content type: text/plain
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 zhangjin 1.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    
85     //Track-detector associator
86     #include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
87    
88     // Vertices...
89     #include "DataFormats/VertexReco/interface/Vertex.h"
90     #include "DataFormats/VertexReco/interface/VertexFwd.h"
91    
92     // Muons...
93     #include "DataFormats/MuonReco/interface/MuonFwd.h"
94     #include "DataFormats/MuonReco/interface/MuonSelectors.h"
95    
96     //MC truth information
97     #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"
98     #include "SimDataFormats/PileupSummaryInfo/interface/PileupSummaryInfo.h"
99     //Tracking Particles, Match to simulations/generation level particles
100     #ifdef TrackingParticles
101     #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
102     #include "SimDataFormats/TrackingAnalysis/interface/TrackingVertexContainer.h"
103     #include "DataFormats/RecoCandidate/interface/TrackAssociation.h"
104     #include "SimTracker/Records/interface/TrackAssociatorRecord.h"
105     #include "SimTracker/TrackAssociation/interface/TrackAssociatorBase.h"
106     #include "SimMuon/MCTruth/interface/MuonAssociatorByHits.h"
107     //SimTracks
108     #include "SimDataFormats/Track/interface/SimTrackContainer.h"
109     //SimVertex
110     #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
111     #else
112     #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
113     #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
114     #endif
115    
116     #include <vector>
117     #include <string.h>
118     #include <iostream>
119    
120     #include "TVector3.h"
121     #include "TH1F.h"
122     #include "TH2F.h"
123     #include "TFile.h"
124     #include "TString.h"
125     #include "TTree.h"
126    
127     using namespace std;
128     using namespace edm;
129     using namespace reco;
130    
131     #define MAXNTRACKS 1500
132    
133     //Chambers positions 1/1,4 1/2 1/3 2/1,2 3/1,2 4/1,2
134     //const Float_t MEZOdd[6] ={615.95, 711.76, 694.16, 839.96, 924.04, 1013.5}; // 839.96
135     //const Float_t MEZEven[6] ={586.65, 684.36, 694.16, 815.16, 948.84, 1038.3}; // 839.96
136     const Float_t MEZ[6] ={601.3, 696.11, 696.11, 827.56, 936.44, 1025.9}; // 839.96
137    
138     class TPTrackMuonSys : public edm::EDAnalyzer {
139     public:
140     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};
141     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};
142     /// Constructor
143     TPTrackMuonSys(const edm::ParameterSet& pset);
144    
145     /// Destructor
146     virtual ~TPTrackMuonSys();
147    
148     protected:
149     private:
150     virtual void beginJob() ;
151     virtual void beginRun(const Run& r, const EventSetup& iSet);
152     virtual void analyze(const edm::Event&, const edm::EventSetup&);
153     virtual void endJob() ;
154    
155     TrajectoryStateOnSurface cylExtrapTrkSam(reco::TrackRef track, double rho);
156     TrajectoryStateOnSurface surfExtrapTrkSam(reco::TrackRef track, double z);
157     FreeTrajectoryState freeTrajStateMuon(reco::TrackRef track);
158    
159     struct MCParticleInfo
160     {
161     Bool_t IsThisFromSimTrk,IsParticleFromGenerator,DoesParticleHaveMuonHit,IsParticleBornInsideOfARegion,IsPileup;
162     Int_t pdgId;
163     };
164    
165     MCParticleInfo MCParticleInfo_Creator( const SimTrack * thisTrk, TrackingParticleRef tpr );
166     MCParticleInfo MCParticleInfo_Creator( HepMC::GenParticle * GenParticle ) {
167     MCParticleInfo TBA;
168     TBA.IsThisFromSimTrk=false;
169     TBA.IsParticleFromGenerator=true; TBA.DoesParticleHaveMuonHit=false;
170     TBA.IsParticleBornInsideOfARegion=true; TBA.IsPileup=false;
171     TBA.pdgId=GenParticle->pdg_id();
172     return TBA;
173     }
174    
175     vector<SimVertex> SVC;
176     vector< MCParticleInfo > MCParticlesList;
177     vector<Int_t> DChain;
178     vector< vector<Int_t> > SimChains;
179     vector< vector<Int_t> > HepMCChains;
180     vector<const SimTrack *> SavedSimTrk;
181     vector<HepMC::GenParticle *> SavedHepPar;
182    
183     inline Int_t FindSimTrackInMCParticlesList( Int_t PosInSimTrackVec ) {
184     Int_t count=0;
185     vector<MCParticleInfo>::const_iterator MCParticlesList_iter = MCParticlesList.begin();
186     for (; MCParticlesList_iter != MCParticlesList.end(); MCParticlesList_iter++ )
187     if ( MCParticlesList_iter->IsThisFromSimTrk ) {
188     if (count==PosInSimTrackVec) break;
189     else count++;
190     }
191     return MCParticlesList_iter-MCParticlesList.begin();
192     }
193    
194     inline Int_t FindHepMCInMCParticlesList( Int_t PosInHepMCVec ) {
195     Int_t count=0;
196     vector<MCParticleInfo>::const_iterator MCParticlesList_iter = MCParticlesList.begin();
197     for (; MCParticlesList_iter != MCParticlesList.end(); MCParticlesList_iter++ )
198     if ( !MCParticlesList_iter->IsThisFromSimTrk ) {
199     if (count==PosInHepMCVec) break;
200     else count++;
201     }
202     return MCParticlesList_iter-MCParticlesList.begin();
203     }
204    
205     Bool_t GetDecayChains(TrackingParticleRef tpr, HepMC::GenEvent *HepGenEvent, ULong64_t &type, Int_t &truth_thesamewith, vector<vector< vector<Int_t> > > & SimChains);
206     void SimTrackDaughtersTree(const SimTrack * thisTrk, TrackingParticleRef tpr);
207     void HepMCParentTree(HepMC::GenParticle *genPar);
208     inline ParticleType ParticleCata(Int_t pid);
209     Bool_t SaveAndClassify(vector<Int_t> &Chain, vector<TheTrackType> &types, Int_t & truth_thesamewith, vector<vector< vector<Int_t> > > & SimChains);
210     TheTrackType Classify(vector<Int_t> &Chain);
211     Bool_t IstheSameDChain(const vector<Int_t> &Chain1,const vector<Int_t> &Chain2);
212    
213     CSCConditions theDbConditions;
214     HLTConfigProvider hltConfigProvider_;
215    
216     void chamberCandidates(Int_t station, Float_t feta, Float_t phi, std::vector <int> &coupleOfChambers);
217     Int_t ringCandidate(Int_t station, Float_t feta, Float_t phi);
218     void fillChamberPosition();
219     Short_t thisChamberCandidate(Short_t station, Short_t ring, Float_t phi);
220    
221     ///// Functions needed...
222     void getCSCSegWkeyHalfStrip(const std::vector<CSCRecHit2D> &theseRecHits, Float_t &cStrp, Float_t &ckWG);
223    
224     Float_t YDistToHVDeadZone(Float_t yLocal, Int_t StationAndRing);
225    
226     reco::MuonCollection::const_iterator matchTTwithMT(reco::TrackCollection::const_iterator &itrack);
227    
228     bool matchTTwithCSCRecHit(bool trackDir,
229     Int_t j,
230     reco::TrackRef trackRef,
231     edm::Handle<CSCRecHit2DCollection> recHits,
232     //std::vector<CSCRecHit2DCollection> recHitOut,
233     std::vector<CSCRecHit2D> &recHitOut,
234     std::vector<Int_t > &deltaRecHitX,
235     std::vector<Int_t > &deltaRecHitY);
236    
237    
238     bool matchTTwithRPCEChit(bool trackDir,
239     Int_t j,
240     reco::TrackRef trackRef,
241     edm::Handle<RPCRecHitCollection> rpcRecHits,
242     RPCRecHitCollection::const_iterator &rpcHitOut);
243    
244     inline Float_t TrajectoryDistToSeg( TrajectoryStateOnSurface *TrajSuf, CSCSegmentCollection::const_iterator segIt);
245    
246     TrajectoryStateOnSurface* matchTTwithCSCSeg( reco::TrackRef trackRef, edm::Handle<CSCSegmentCollection> cscSegments,
247     CSCSegmentCollection::const_iterator &cscSegOut, CSCDetId & idCSC );
248    
249     Bool_t matchTTwithCSCSeg(Bool_t trackDir, Int_t j, reco::TrackRef trackRef, edm::Handle<CSCSegmentCollection> cscSegments,
250     CSCSegmentCollection::const_iterator &cscSegOut );
251    
252    
253     Bool_t matchCSCSegWithLCT(edm::Handle<CSCCorrelatedLCTDigiCollection> mpclcts,
254     CSCDetId & idCSC,
255     Int_t TT,
256     Float_t TrkPhi, Float_t TrkEta,
257     Float_t c1, Float_t w1,
258     CSCCorrelatedLCTDigiCollection::const_iterator &mpcItOut,
259     CSCCorrelatedLCTDigiCollection::const_iterator &mpcHsWkOut,
260     Bool_t *xMatch,
261     Float_t *mDAngle,
262     Float_t *diffTrkEta,
263     Float_t *diffTrkPhi,
264     Float_t *delHStrp,
265     Float_t *delWkey
266     );
267    
268     LocalPoint * matchTTwithLCTs(Float_t xPos, Float_t yPos, Short_t ec, Short_t st, Short_t rg, Short_t cham,
269     edm::Handle<CSCCorrelatedLCTDigiCollection> mpclcts, Float_t &dRTrkLCT, Int_t &lctBX );
270    
271     Int_t getNLayerMatchedCSCSeg(CSCSegmentCollection::const_iterator &cscSegMatch,
272     edm::Handle<CSCRecHit2DCollection> recHits,
273     Float_t *delRecSegX,
274     Float_t *delRecSegY,
275     Int_t &nGHits);
276    
277     CSCSectorReceiverLUT *srLUTs_[2][6][5];
278     const L1MuTriggerScales* theTriggerScales;
279    
280     edm::Handle<CSCSegmentCollection> cscSegments;
281     edm::Handle<reco::MuonCollection> muons;
282     edm::ESHandle<MagneticField> theBField;
283     edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry;
284     // DT Geometry
285     edm::ESHandle<DTGeometry> dtGeom;
286     edm::ESHandle<RPCGeometry> rpcGeo;
287     // CSC Geometry
288     edm::ESHandle<CSCGeometry> cscGeom;
289    
290     // Extrapolator to cylinder
291     edm::ESHandle<Propagator> propagatorAlong;
292     edm::ESHandle<Propagator> propagatorOpposite;
293    
294     // counters
295     Int_t nEventsAnalyzed;
296     Int_t treeCount;
297    
298     Float_t StationOnePhi[36];
299     Float_t StationTwoOnePhi[18], StationTwoTwoPhi[36];
300     Float_t StationThreeOnePhi[18], StationThreeTwoPhi[36];
301     Float_t StationFourOnePhi[18], StationFourTwoPhi[36];
302    
303    
304     unsigned long long etime;
305     Int_t bunchX, orbitNumb, expType, LumiBlock;
306     //
307     // The root file for the histograms.
308     //
309     TFile *theFile;
310    
311     //
312     // General input parameters
313     //
314     std::string m_rootFileName, m_refRootFile, m_hltSingleMuTriName, m_hltDoubleMuTriName;
315     double m_cellThreshold;
316     // Steering parameters...
317     edm::InputTag m_beamSpot;
318     Bool_t m_isMC, m_doTrigger, m_doTrack, m_doMuon, m_doElectron, m_doEIDAndIso, m_doPhoton, m_doGenPart;
319     Bool_t m_doTau, m_doJet, m_doBJet, m_doMET, m_doCaloTiming, m_doIslandHybrid;
320     edm::InputTag m_gTracksTag, m_fitTracksTag, m_electronTag, m_muonTag, m_photonTag, m_mcTag;
321     edm::InputTag m_jet0Tag, m_jet1Tag, m_jet2Tag, m_jet3Tag, m_jet4Tag, m_jet5Tag, m_jet6Tag;
322     edm::InputTag m_trujet0Tag, m_trujet1Tag, m_trujet2Tag, m_trujet3Tag, m_trujet4Tag, m_trujet5Tag, m_trujet6Tag, m_vertexSrc, m_dEdxDiscrimTag;
323     edm::InputTag m_HepMCTag;
324     edm::InputTag trackProducer;
325     edm::InputTag m_hlt, m_hltTrgEv, m_L1extraTag;
326     vector<Int_t> m_HLTMuTrgBit;
327     Int_t m_HLTDiMuTrgBit;
328     vector<string> m_HLTMuTrgNames;
329     string m_HLTDiMuTrgName;
330    
331     //badchambers
332     edm::ESHandle<CSCBadChambers> pBad;
333     CSCBadChambers* badChambers_;
334    
335     /// Ntuple variables
336     TTree *fractNtuple, *RunInfo;
337     //HLT
338     vector<string> *HLTMuNames,*HLTMuObjModuleNames;
339     string *HLTTableName, *HLTDiMuName, *HLTDiMuObjModuleName;
340     vector<Int_t> *badChambersIndices;
341     vector<Bool_t> *HLTMuAcceptance;
342     Bool_t HLTDiMuAcceptance,trgSingle;
343     vector<Float_t> *minDRHLTMu;
344     Float_t minDRHLTAllSingleMu,minDRHLTDiMu;
345    
346     // for general information
347     Int_t isItMC, run_number, event_number;
348     Float_t mcweight;
349     UInt_t numberOfPUVertices; // the number of pileup interactions that have been added to the event from BX=0
350     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.
351     UInt_t numberOfPUVerticesTot; // all PX : BX=0 and out-of-time PU
352     UInt_t numberOfPrimaryVertices ;
353     //// for track information
354     //
355     Float_t tracks_ecalCrossedE, tracks_ecal3E, tracks_ecal5E, tracks_ecal3EMax, tracks_ecal5EMax;
356     Float_t tracks_ecalTrueE, tracks_trkPosAtEcalEta, tracks_trkPosAtEcalPhi, tracks_ecalMaxPosEta, tracks_ecalMaxPosPhi;
357     Float_t tracks_hcalCrossedE, tracks_hcal3E, tracks_hcal5E, tracks_hcal3EMax, tracks_hcal5EMax;
358     Float_t tracks_hcalTrueE, tracks_trkPosAtHcalEta, tracks_trkPosAtHcalPhi, tracks_hcalMaxPosEta, tracks_hcalMaxPosPhi;
359     Float_t tracks_hcalTrueECorrected;
360     Float_t tracktruth_pt, tracktruth_e, tracktruth_p, tracktruth_id;
361     Bool_t tracktruth_isPileup;
362     ULong64_t tracktruth_type;
363     Int_t tracktruth_thesamewith;
364     TrackAssociatorParameters parameters_;
365     TrackDetectorAssociator trackAssociator_;
366    
367     // Tracks
368     Int_t tracks_algo, tracks_charge, tracks_numberOfValidHits, tracks_algN, tracks_numberOfLostHits, tracks_recHitsSize;
369     Float_t tracks_id, tracks_chi2, tracks_e;
370     Float_t tracks_px, tracks_py, tracks_pz, tracks_pt;
371     Float_t tracks_eta, tracks_phi, tracks_dxy, tracks_d0, tracks_dsz, tracks_dz;
372     Float_t tracks_vx, tracks_vy, tracks_vz, tracks_ndof;
373     Float_t tracks_qoverp, tracks_lambda, tracks_quality;
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;
378    
379     Int_t nPosTrk, nNegTrk, nTotalTrks;
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 MuTagcharge, MuTagHitsMuSys, MuTagHitsTrkSys, MuTagHitsPixSys, MuTagHitsRPCSys;
399     Float_t MuTagE, MuProbeE;
400     Float_t MuTagPhiProj1, MuTagEtaProj1, MuTagPhiProj2, MuTagEtaProj2;
401     Float_t MuTagtracktruth_pt, MuTagtracktruth_p, MuTagtracktruth_id;
402     Bool_t MuTagtracktruth_isPileup;
403     ULong64_t MuTagtracktruth_type;
404     Int_t MuTagtracktruth_thesamewith;
405    
406     /// For the ntuples..
407     //
408     Bool_t MuTagCaloL, MuTagCaloT, iSameVtx;
409    
410     Int_t mu_found, MuProbenHitsMuSys, MuProbenHitsTrkSys, MuProbenHitsPixSys, MuProbenHitsRPCSys;
411     Int_t MuTagPromt, MuTagnSegTrkArb, MuProbeCharge;
412     Float_t MuProbePt, MuProbeEta, MuProbePhi, MuTagPt, MuTagEta, MuTagPhi, invMass, deltaRTrkMu;
413     Float_t vtx_r, vtx_z, vtx_rError, vtx_zError, vtx_normChi2;
414     Int_t vtx_size, igSameVtx;
415    
416     Int_t nTrkCountCSCSeg;
417     /*CSC Chamber Candidates in each station*/
418     Bool_t CSCEndCapPlus;
419     Short_t CSCRg[4],CSCChCand[4];
420     Bool_t CSCChBad[4];
421    
422     /*Extrapolated Tracks on CSC Chamber Candidates in each station*/
423     Float_t CSCxProjLc[4],CSCyProjLc[4],CSCxErrProjLc[4],CSCyErrProjLc[4],CSCDyProjHVGap[4],CSCProjEdgeDist[4],CSCProjEdgeDistErr[4];
424    
425     /*Segments characteristics*/
426     Float_t CSCSegxLc[4],CSCSegyLc[4],CSCSegxErrLc[4],CSCSegyErrLc[4],CSCSegChisqProb[4];
427     Int_t CSCnSegHits[4];
428    
429     /*Distance from the Extrapolated Tracks to CSC Segments, 99999. for no CSC segment found*/
430     Float_t CSCDxyTTSeg[4],CSCDxTTSeg[4],CSCDyTTSeg[4],CSCDxyErrTTSeg[4],CSCdXdZTTSeg[4],CSCdYdZTTSeg[4];
431    
432     /*Distance from the Extrapolated Tracks to LCT, 99999. for no LCT found*/
433     Float_t CSCLCTxLc[4],CSCLCTyLc[4],CSCDrTTLCT[4],CSCDrErrTTLCT[4];
434     Int_t CSCLCTbx[4];
435    
436     /*DetlaR between the extrapolated tracker track on muon system and the tagged muon*/
437     Float_t dRTkMu[4];
438     /*Default decision of whether a segment or LCT is found*/
439     Int_t segSt[4],lctSt[4];
440    
441     Int_t errPos, chargeQ1, chargeQ2, chargeQ3;
442     Int_t mREndcap, mRStation, mRRing, mRChamber, rME11;
443     Int_t diffPattern;
444     Float_t mRCSCLCTDx, mRCSCLCTDy, mRCSCLCTDr, segDXDZ, segDYDZ;
445    
446     };
447     #endif