Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:21:11

0001 #ifndef __L1Analysis_L1AnalysisCSCTFDataFormat_H__
0002 #define __L1Analysis_L1AnalysisCSCTFDataFormat_H__
0003 
0004 //-------------------------------------------------------------------------------
0005 // Created 08/03/2010 - E. Conte, A.-C. Le Bihan
0006 //
0007 //
0008 // Original code : L1Trigger/L1TNtuples/L1NtupleProducer -  Gian Piero Di Giovanni
0009 //-------------------------------------------------------------------------------
0010 #include "TMatrixD.h"
0011 #include <vector>
0012 
0013 namespace L1Analysis {
0014   struct L1AnalysisCSCTFDataFormat {
0015     L1AnalysisCSCTFDataFormat() { Reset(); };
0016     ~L1AnalysisCSCTFDataFormat(){};
0017 
0018     static const int MAXCSCTFTR = 60;
0019     static const int MAXCSCTFLCTSTR = 4;
0020 
0021     void Reset() {
0022       trSize = 0;
0023       trEndcap.clear();
0024       trSector.clear();
0025 
0026       trBx.clear();
0027 
0028       // if set to 1 track has lct from the station
0029       trME1ID.clear();
0030       trME2ID.clear();
0031       trME3ID.clear();
0032       trME4ID.clear();
0033       trMB1ID.clear();
0034 
0035       trME1TBin.clear();
0036       trME2TBin.clear();
0037       trME3TBin.clear();
0038       trME4TBin.clear();
0039       trMB1TBin.clear();
0040 
0041       trOutputLink.clear();
0042 
0043       // some input of the PT LUTs
0044       trCharge.clear();
0045       trChargeValid.clear();
0046       trForR.clear();
0047       trPhi23.clear();
0048       trPhi12.clear();
0049       trPhiSign.clear();
0050 
0051       // in bits...
0052       trEtaBit.clear();
0053       trPhiBit.clear();
0054       trPtBit.clear();
0055 
0056       // ... converted
0057       trEta.clear();
0058       trPhi.clear();
0059       trPhi_02PI.clear();
0060       trPt.clear();
0061 
0062       // + useful information
0063       trMode.clear();
0064       trQuality.clear();
0065 
0066       //----------------------------------------------------------------------
0067       // LCT (STUBS FORMING THE TRACK)
0068       //----------------------------------------------------------------------
0069       trNumLCTs.clear();
0070 
0071       trLctEndcap.Clear();
0072       trLctSector.Clear();
0073       trLctSubSector.Clear();
0074       trLctBx.Clear();
0075       trLctBx0.Clear();
0076 
0077       trLctStation.Clear();
0078       trLctRing.Clear();
0079       trLctChamber.Clear();
0080       trLctTriggerCSCID.Clear();
0081       trLctFpga.Clear();
0082 
0083       trLctlocalPhi.Clear();
0084       //trLctlocalPhi_bend.Clear();
0085       trLctCLCT_pattern.Clear();
0086       trLctQuality.Clear();
0087       trLctglobalPhi.Clear();
0088       trLctglobalEta.Clear();
0089 
0090       trLctstripNum.Clear();
0091       trLctwireGroup.Clear();
0092 
0093       trLctEndcap.Clear();
0094       trLctSector.Clear();
0095       trLctSubSector.Clear();
0096       trLctBx.Clear();
0097       trLctBx0.Clear();
0098 
0099       trLctStation.Clear();
0100       trLctRing.Clear();
0101       trLctChamber.Clear();
0102       trLctTriggerCSCID.Clear();
0103       trLctFpga.Clear();
0104 
0105       trLctlocalPhi.Clear();
0106       //trLctlocalPhi_bend.Clear();
0107       trLctCLCT_pattern.Clear();
0108       trLctQuality.Clear();
0109       trLctglobalPhi.Clear();
0110       trLctglobalEta.Clear();
0111 
0112       trLctstripNum.Clear();
0113       trLctwireGroup.Clear();
0114 
0115       //---------------------
0116 
0117       trLctEndcap.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0118       trLctSector.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0119       trLctSubSector.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0120       trLctBx.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0121       trLctBx0.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0122 
0123       trLctStation.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0124       trLctRing.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0125       trLctChamber.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0126       trLctTriggerCSCID.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0127       trLctFpga.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0128 
0129       trLctlocalPhi.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0130       //trLctlocalPhi_bend.ResizeTo(MAXCSCTFTR,MAXCSCTFLCTSTR);
0131       trLctCLCT_pattern.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0132       trLctQuality.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0133       trLctglobalPhi.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0134       trLctglobalEta.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0135 
0136       trLctstripNum.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0137       trLctwireGroup.ResizeTo(MAXCSCTFTR, MAXCSCTFLCTSTR);
0138 
0139       //----------------------------------------------------------------------
0140       // ALL LCT
0141       //----------------------------------------------------------------------
0142       lctSize = 0;
0143       lctEndcap.clear();
0144       lctSector.clear();
0145       lctSubSector.clear();
0146       lctBx.clear();
0147       lctBx0.clear();
0148 
0149       lctStation.clear();
0150       lctRing.clear();
0151       lctChamber.clear();
0152       lctTriggerCSCID.clear();
0153       lctFpga.clear();
0154 
0155       // note: the SPs return them in bits
0156       lctlocalPhi.clear();
0157       //lctlocalPhi_bend.clear();
0158       lctCLCT_pattern.clear();
0159       lctQuality.clear();
0160       lctglobalPhi.clear();
0161       lctglobalEta.clear();
0162 
0163       lctstripNum.clear();
0164       lctwireGroup.clear();
0165 
0166       //---------------------------------------------------------------------------
0167       // BASIC CSCTF information
0168       //---------------------------------------------------------------------------
0169       nsp = 0;  // num of SPs active in the event
0170       stSPslot.clear();
0171       stL1A_BXN.clear();
0172       stTrkCounter.clear();
0173       stOrbCounter.clear();
0174 
0175       dtSize = 0;
0176       dtCAL.clear();
0177       dtFLAG.clear();
0178       dtBXN.clear();
0179       dtSector.clear();
0180       dtSubSector.clear();
0181       dtBX0.clear();
0182       dtPhiBend.clear();
0183       dtQuality.clear();
0184       dtPhiPacked.clear();
0185     }
0186 
0187     //----------------------------------------------------------------------
0188     // TRACKS
0189     //----------------------------------------------------------------------
0190     // csctf track candidates
0191     int trSize;
0192     std::vector<int> trEndcap;
0193     std::vector<int> trSector;
0194 
0195     std::vector<int> trBx;
0196 
0197     // if set to 1 track has lct from the station
0198     std::vector<int> trME1ID;
0199     std::vector<int> trME2ID;
0200     std::vector<int> trME3ID;
0201     std::vector<int> trME4ID;
0202     std::vector<int> trMB1ID;
0203 
0204     std::vector<int> trME1TBin;
0205     std::vector<int> trME2TBin;
0206     std::vector<int> trME3TBin;
0207     std::vector<int> trME4TBin;
0208     std::vector<int> trMB1TBin;
0209 
0210     std::vector<int> trOutputLink;
0211 
0212     // some input of the PT LUTs
0213     std::vector<int> trCharge;
0214     std::vector<int> trChargeValid;
0215     std::vector<int> trForR;
0216     std::vector<int> trPhi23;
0217     std::vector<int> trPhi12;
0218     std::vector<int> trPhiSign;
0219 
0220     // in bits...
0221     std::vector<int> trEtaBit;
0222     std::vector<int> trPhiBit;
0223     std::vector<int> trPtBit;
0224 
0225     // ... converted
0226     std::vector<float> trEta;
0227     std::vector<float> trPhi;
0228     std::vector<float> trPhi_02PI;
0229     std::vector<float> trPt;
0230 
0231     // + useful information
0232     std::vector<int> trMode;
0233     std::vector<int> trQuality;
0234 
0235     //----------------------------------------------------------------------
0236     // LCT (STUBS FORMING THE TRACK)
0237     //----------------------------------------------------------------------
0238     std::vector<int> trNumLCTs;  // it contains the number of LCT forming a track
0239 
0240     TMatrixD trLctEndcap;
0241     TMatrixD trLctSector;
0242     TMatrixD trLctSubSector;
0243     TMatrixD trLctBx;
0244     TMatrixD trLctBx0;
0245 
0246     TMatrixD trLctStation;
0247     TMatrixD trLctRing;
0248     TMatrixD trLctChamber;
0249     TMatrixD trLctTriggerCSCID;
0250     TMatrixD trLctFpga;
0251 
0252     // note: the SPs return them in bits
0253     TMatrixD trLctlocalPhi;
0254     //TMatrixD trLctlocalPhi_bend;
0255     TMatrixD trLctCLCT_pattern;
0256     TMatrixD trLctQuality;
0257     TMatrixD trLctglobalPhi;
0258     TMatrixD trLctglobalEta;
0259 
0260     TMatrixD trLctstripNum;
0261     TMatrixD trLctwireGroup;
0262 
0263     //----------------------------------------------------------------------
0264     // ALL LCT
0265     //----------------------------------------------------------------------
0266     int lctSize;
0267     std::vector<int> lctEndcap;
0268     std::vector<int> lctSector;
0269 
0270     std::vector<int> lctSubSector;
0271     std::vector<int> lctBx;
0272     std::vector<int> lctBx0;
0273     std::vector<int> lctStation;
0274     std::vector<int> lctRing;
0275     std::vector<int> lctChamber;
0276     std::vector<int> lctTriggerCSCID;
0277     std::vector<int> lctFpga;
0278 
0279     // note: the SPs return them in bits
0280     std::vector<int> lctlocalPhi;
0281     //std::vector<int> lctlocalPhi_bend;
0282     std::vector<int> lctCLCT_pattern;
0283     std::vector<int> lctQuality;
0284     std::vector<int> lctglobalPhi;
0285     std::vector<int> lctglobalEta;
0286     std::vector<int> lctstripNum;
0287     std::vector<int> lctwireGroup;
0288 
0289     //---------------------------------------------------------------------------
0290     // BASIC CSCTF information
0291     //---------------------------------------------------------------------------
0292     int nsp;  // num of SPs active in the event
0293     std::vector<int> stSPslot;
0294     std::vector<int> stL1A_BXN;
0295     std::vector<unsigned long int> stTrkCounter;
0296     std::vector<unsigned long int> stOrbCounter;
0297 
0298     //DT Stub Information
0299     int dtSize;
0300     std::vector<int> dtCAL;
0301     std::vector<int> dtFLAG;
0302     std::vector<int> dtBXN;
0303     std::vector<int> dtSector;
0304     std::vector<int> dtSubSector;
0305     std::vector<int> dtBX0;
0306     std::vector<int> dtPhiBend;
0307     std::vector<int> dtQuality;
0308     std::vector<int> dtPhiPacked;
0309   };
0310 }  // namespace L1Analysis
0311 #endif