Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:33

0001 
0002 #ifndef jhugon_EffHistogramList_h
0003 #define jhugon_EffHistogramList_h
0004 // system include files
0005 #include <vector>
0006 #include <string>
0007 #include <fstream>
0008 // user include files
0009 #include "FWCore/Framework/interface/Frameworkfwd.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0011 #include "FWCore/ServiceRegistry/interface/Service.h"
0012 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0013 #include <TCanvas.h>
0014 #include <TStyle.h>
0015 #include <TLegend.h>
0016 #include <TLatex.h>
0017 #include <TF1.h>
0018 #include <TH2.h>
0019 #include "L1Trigger/CSCTrackFinder/test/src/TrackHistogramList.h"
0020 #include <TMath.h>
0021 
0022 namespace csctf_analysis {
0023   class EffHistogramList {
0024   public:
0025     EffHistogramList(const std::string dirname, const edm::ParameterSet *parameters);
0026     void ComputeEff(TrackHistogramList *);
0027     void Print();
0028     TH1F *EffPhi_mod_10_Q3_endcap1, *EffPhi_mod_10_Q2_endcap1;
0029     TH1F *EffPhi_mod_10_Q3_endcap2, *EffPhi_mod_10_Q2_endcap2;
0030     TH1F *modeOcc;
0031     TH1F *EffEtaAll, *EffEtaQ3, *EffEtaQ2, *EffEtaQ1;
0032     TH1F *EffSignedEtaAll, *EffSignedEtaQ3, *EffSignedEtaQ2, *EffSignedEtaQ1;
0033     TH1F *EffPhiQ3, *EffPhiQ2, *EffPhiQ1, *EffPhi;
0034     TH1F *EffPtOverall, *EffPtCSCOnly, *EffPtOverlap, *EffPtHighEta, *EffPtDTOnly, *EffPtCSCRestricted;
0035     TH1F *EffTFPt10Overall, *EffTFPt12Overall, *EffTFPt16Overall, *EffTFPt20Overall, *EffTFPt40Overall,
0036         *EffTFPt60Overall;
0037     TH1F *EffTFPt10CSCOnly, *EffTFPt12CSCOnly, *EffTFPt16CSCOnly, *EffTFPt20CSCOnly, *EffTFPt40CSCOnly,
0038         *EffTFPt60CSCOnly;
0039     TH1F *EffTFPt10CSCRestricted, *EffTFPt12CSCRestricted, *EffTFPt16CSCRestricted, *EffTFPt20CSCRestricted,
0040         *EffTFPt40CSCRestricted, *EffTFPt60CSCRestricted;
0041     TH1F *EffTFPt10DTOnly, *EffTFPt12DTOnly, *EffTFPt16DTOnly, *EffTFPt20DTOnly, *EffTFPt40DTOnly, *EffTFPt60DTOnly;
0042     TH1F *EffTFPt10Overlap, *EffTFPt12Overlap, *EffTFPt16Overlap, *EffTFPt20Overlap, *EffTFPt40Overlap,
0043         *EffTFPt60Overlap;
0044     TH1F *EffTFPt10HighEta, *EffTFPt12HighEta, *EffTFPt16HighEta, *EffTFPt20HighEta, *EffTFPt40HighEta,
0045         *EffTFPt60HighEta;
0046     TLegend *TrackerLeg1, *TrackerLeg2, *TrackerLeg3;
0047     TLegend *TrackerLeg1CSCOnly, *TrackerLeg1Overlap, *TrackerLeg1HighEta, *TrackerLeg1DTOnly,
0048         *TrackerLeg1CSCRestricted, *TrackerLeg1Overall;
0049     TCanvas *PhiEff, *EtaEff, *SignedEtaEff, *PtEffAllOverall, *PtEffAllCSCOnly, *PtEffAllOverlap, *PtEffAllHighEta,
0050         *PtEffAllDTOnly, *PtEffAllCSCRestricted;
0051     TF1 *fitThreshOverall, *fitThreshCSCOnly, *fitThreshDTOnly, *fitThreshCSCRestricted, *fitThreshOverlap,
0052         *fitThreshHighEta;
0053 
0054   private:
0055     edm::Service<TFileService> fs;
0056     std::string PtEffStatsFilename;
0057     void DrawPtEffHists(std::string region,
0058                         TCanvas *canvas,
0059                         TF1 *fit,
0060                         TLegend *legend,
0061                         std::vector<std::string> thresholds,
0062                         std::vector<TH1F *> PtEffHists);
0063     void computeErrors(TrackHistogramList *);
0064     void divideHistograms(TrackHistogramList *);
0065     void computePtPlateauEff(std::ofstream *PtStats,
0066                              std::vector<double> PlateauDefinitions,
0067                              std::vector<std::string> thresholds,
0068                              std::vector<TH1F *> PtEffHists);
0069     TLatex *latexDescription;
0070   };
0071   Double_t thresh(Double_t *pt, Double_t *par);
0072 }  // namespace csctf_analysis
0073 #endif