--- UserCode/wangdy/TimingCSC/interface/CSCTimingAnalyzer.h 2007/12/06 22:25:00 1.8 +++ UserCode/wangdy/TimingCSC/interface/CSCTimingAnalyzer.h 2008/09/30 10:19:18 1.13 @@ -7,7 +7,7 @@ * based on B. Jackson's analyzer by Dayong Wang * */ -// $Id: CSCTimingAnalyzer.h,v 1.8 2007/12/06 22:25:00 wangdy Exp $ +// $Id: CSCTimingAnalyzer.h,v 1.13 2008/09/30 10:19:18 wangdy Exp $ #ifndef TimingCSC_CSCTimingAnalyzer_h #define TimingCSC_CSCTimingAnalyzer_h @@ -28,17 +28,21 @@ enum /// MAX_STATIONS is set to 5 because the subsectors in ME 1 are handled /// as a separate station MAX_STATIONS = 5, - MAX_SECTORS = 6, + MAX_SECTORS = 12, MAX_CHAMBERS = 9 }; const TString stationLabel[MAX_STATIONS] = {"1a","1b","2","3","4"}; const TString sectorLabel[12] = {"1","2","3","4","5","6", "7","8","9","10","11","12"}; const TString chamberLabel[MAX_CHAMBERS] = {"1","2","3","4","5","6","7","8","9"}; +const TString SecOverLabel[11] = {"1b3-1a1","1b6-1a4","2S3-1","2S3-4","2S9-1","2S9-4", + "3S3-1","3S3-4","3S9-1","3S9-4","4S3-1"}; const int MINSEC=0; const int MAXSEC=12; const int TIMINGSEC=3; // this only works for naive estimation now const int BX_START=3; // starting of hBX: 3 for MC and 0 for data +const int ABSBX_START=797; // starting of hAbsBX: run#62232:797; run#63200:234; run62384:2500 +const int NUMSEC=MAXSEC-MINSEC; class CSCTriggerMappingFromFile; @@ -67,7 +71,7 @@ private: void deleteRootObjects(); void deleteHistograms(); void deleteCanvases(); - + int myBX(edm::Event& event); bool testBeam; int TBFEDid, TBendcap, TBsector; std::string mapPath; @@ -89,8 +93,16 @@ private: /// for output of const and error TFile* fTimingConst; - TH1I* hBX[12][MAX_STATIONS][MAX_CHAMBERS]; + /// for inter sector synchronization + TFile* fInterSector; + + /// for absolute BXN synchronization + TFile* fAbsBXN; + + TH1I* hBX[NUMSEC][MAX_STATIONS][MAX_CHAMBERS]; + TH1I* hAbsBX[NUMSEC][MAX_STATIONS][MAX_CHAMBERS]; TH1I* hNumTracksPerEvent; + TH1I* hBX0; TH1F* hTimingConstDirect; TH1F* hTimingConstA; TH1F* hTimingConstB; @@ -100,90 +112,99 @@ private: /// /// MAX_CHAMBERS-2 because there are that many boundaries between CSCs to /// account for in ME 234. In ME 1 there will be unused plots - TH1I* hBXDifference[12][MAX_STATIONS][MAX_CHAMBERS-2]; + TH1I* hBXDifference[NUMSEC][MAX_STATIONS][MAX_CHAMBERS-2]; /// BX difference between station 2 and 3 /// overlapping cscs in ME 2 and 3 - TH1I* hBXDifference23Overlap[12][MAX_CHAMBERS]; + TH1I* hBXDifference23Overlap[NUMSEC][MAX_CHAMBERS]; /// crossing cscs in ME 2 and 3 - TH1I* hBXDifference23Cross[12][2*MAX_CHAMBERS-4]; + TH1I* hBXDifference23Cross[NUMSEC][2*MAX_CHAMBERS-4]; /// non overlapping cscs in ME 2 and 3 - TH1I* hBXDifference23NonOverlap[12][MAX_CHAMBERS-3]; + TH1I* hBXDifference23NonOverlap[NUMSEC][MAX_CHAMBERS-3]; /// require "forward" muons /// BX difference between stations 1A and 2 /// ME 1A ring 1 - TH1I* hBXDifference1AR12[12][MAX_CHAMBERS-3]; + TH1I* hBXDifference1AR12[NUMSEC][MAX_CHAMBERS-3]; /// ME 1A ring 2/3 - TH1I* hBXDifference1AR232[12][MAX_CHAMBERS-3]; + TH1I* hBXDifference1AR232[NUMSEC][MAX_CHAMBERS-3]; /// BX difference between stations 1B and 2 /// ME 1B ring 1 - TH1I* hBXDifference1BR12[12][MAX_CHAMBERS-3]; + TH1I* hBXDifference1BR12[NUMSEC][MAX_CHAMBERS-3]; /// ME 1B ring 2/3 - TH1I* hBXDifference1BR232[12][MAX_CHAMBERS-3]; + TH1I* hBXDifference1BR232[NUMSEC][MAX_CHAMBERS-3]; /// BX difference within different rings in stations 1A /// R1-R2 - TH1I* hBXDifference1AInR1R2[12][7]; + TH1I* hBXDifference1AInR1R2[NUMSEC][7]; /// R1-R3 - TH1I* hBXDifference1AInR1R3[12][7]; + TH1I* hBXDifference1AInR1R3[NUMSEC][7]; /// BX difference within different rings in stations 1B /// R1-R2 - TH1I* hBXDifference1BInR1R2[12][7]; + TH1I* hBXDifference1BInR1R2[NUMSEC][7]; /// R1-R3 - TH1I* hBXDifference1BInR1R3[12][7]; + TH1I* hBXDifference1BInR1R3[NUMSEC][7]; /// BX difference within stations 1A abd 1B - TH1I* hBXDifference1AWith1B[12][7]; + TH1I* hBXDifference1AWith1B[NUMSEC][7]; + + + /// BX difference between station 3 and 4 + /// overlapping cscs in ME 3 and 4 + TH1I* hBXDifference34Overlap[NUMSEC][MAX_CHAMBERS]; + /// crossing cscs in ME 3 and 4 + TH1I* hBXDifference34Cross[NUMSEC][4]; + /// BX differences between different sectors + TH1I* hBXDifferenceSector[NUMSEC][11]; /// Canvases to display the histograms once they are filled - TCanvas* cBX[12][MAX_STATIONS]; + TCanvas* cBX[NUMSEC][MAX_STATIONS]; TCanvas* cNumTracksPerEvent; TCanvas* cTimingConstA; TCanvas* cTimingConstB; TCanvas* cTimingConstDirect; TCanvas* cTimingComp; - TCanvas* cBXDifference[12][MAX_STATIONS]; + TCanvas* cBXDifference[NUMSEC][MAX_STATIONS]; /// Canvases for printing BX Difference between station 2 and 3 /// Overlapping cscs in stations 2 and 3 - TCanvas* cBXDifference23Overlap[12]; + TCanvas* cBXDifference23Overlap[NUMSEC]; /// Crossing cscs in stations 2 and 3 - TCanvas* cBXDifference23Cross[12]; + TCanvas* cBXDifference23Cross[NUMSEC]; /// Non-overlapping cscs in stations 2 and 3 - TCanvas* cBXDifference23NonOverlap[12]; + TCanvas* cBXDifference23NonOverlap[NUMSEC]; /// Canvases for printing BX differences between station 1A and 2 /// ME 1A ring 1 - TCanvas* cBXDifference1AR12[12]; + TCanvas* cBXDifference1AR12[NUMSEC]; /// ME 1A ring 2/3 - TCanvas* cBXDifference1AR232[12]; + TCanvas* cBXDifference1AR232[NUMSEC]; /// Canvases for printing BX differences between station 1B and 2 /// ME 1B ring 1 - TCanvas* cBXDifference1BR12[12]; + TCanvas* cBXDifference1BR12[NUMSEC]; /// ME 1B ring 2/3 - TCanvas* cBXDifference1BR232[12]; + TCanvas* cBXDifference1BR232[NUMSEC]; /// Canvases for printing BX differences within station 1A /// R1R2 - TCanvas* cBXDifference1AInR1R2[12]; + TCanvas* cBXDifference1AInR1R2[NUMSEC]; /// R1R3 - TCanvas* cBXDifference1AInR1R3[12]; + TCanvas* cBXDifference1AInR1R3[NUMSEC]; /// Canvases for printing BX differences within station 1B /// R1R2 - TCanvas* cBXDifference1BInR1R2[12]; + TCanvas* cBXDifference1BInR1R2[NUMSEC]; /// R1R3 - TCanvas* cBXDifference1BInR1R3[12]; + TCanvas* cBXDifference1BInR1R3[NUMSEC]; /// Canvases for printing BX differences of station 1A and 1B - TCanvas* cBXDifference1AWith1B[12]; + TCanvas* cBXDifference1AWith1B[NUMSEC]; };