Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
JEventProcessor_CDC_Efficiency.h
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: JEventProcessor_CDC_Efficiency.h
4 // Created: Tue Sep 9 15:41:38 EDT 2014
5 // Creator: hdcdcops (on Linux gluon05.jlab.org 2.6.32-358.18.1.el6.x86_64 x86_64)
6 //
7 
8 #ifndef _JEventProcessor_CDC_Efficiency_
9 #define _JEventProcessor_CDC_Efficiency_
10 
11 #include <set>
12 #include <map>
13 #include <vector>
14 #include <deque>
15 using namespace std;
16 
17 #include <TTree.h>
18 #include <TFile.h>
19 #include <TH1.h>
20 #include <TH2.h>
21 #include <TH3.h>
22 #include <TMath.h>
23 
24 #include <JANA/JFactory.h>
25 #include <JANA/JEventProcessor.h>
26 #include <JANA/JEventLoop.h>
27 #include <JANA/JCalibration.h>
28 
29 #include <HDGEOMETRY/DGeometry.h>
33 #include <PID/DChargedTrack.h>
34 #include <PID/DParticleID.h>
35 #include <PID/DDetectorMatches.h>
36 #include <CDC/DCDCTrackHit.h>
37 
38 class JEventProcessor_CDC_Efficiency:public jana::JEventProcessor{
39  public:
42  const char* className(void){return "JEventProcessor_CDC_Efficiency";}
43 
44  private:
45  jerror_t init(void); ///< Called once at program start.
46  jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber); ///< Called everytime a new run number is detected.
47  jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber); ///< Called every event.
48  jerror_t erun(void); ///< Called everytime run number changes, provided brun has been called.
49  jerror_t fini(void); ///< Called after last event of last event source has been processed.
50 
51  //june12
52  void Fill_Efficiency_Histos(unsigned int ringNum, const DTrackTimeBased *thisTimeBasedTrack, map<int, map<int, set<const DCDCTrackHit*> > >& locSorteDCDCTrackHits, const DParticleID * pid_algorithm, const DTrackFitter *fitter);
53  bool Expect_Hit(const DTrackTimeBased* thisTimeBasedTrack, DCDCWire* wire, double distanceToWire, const DVector3 &pos, double& delta, double& dz);
54 
55  void Fill_MeasuredHit(bool withdEdx, int ringNum, int wireNum, double distanceToWire, const DVector3 &pos, const DVector3 &mom, DCDCWire* wire, const DCDCHit* locHit, const DParticleID * pid_algorithm);
56 
57 
58  //void GitRDun(unsigned int ringNum, const DTrackTimeBased *thisTimeBasedTrack, map<int, map<int, set<const DCDCTrackHit*> > >& locSorteDCDCTrackHits, const DParticleID * pid_algorithm, const DTrackFitter *fitter);
59  //bool Expect_Hit(const DTrackTimeBased* thisTimeBasedTrack, DCDCWire* wire, double distanceToWire, const DVector3 &pos, double& delta, double& dz);
60  // void Fill_MeasuredHit(int ringNum, int wireNum, double distanceToWire, const DVector3 &pos, const DVector3 &mom, DCDCWire* wire, const DCDCHit* locHit, const DParticleID * pid_algorithm);
61 
62  void Fill_ExpectedHit(int ringNum, int wireNum, double distanceToWire);
63  const DCDCTrackHit* Find_Hit(int locRing, int locProjectedStraw, map<int, set<const DCDCTrackHit*> >& locSorteDCDCTrackHits);
64  double GetDOCAFieldOff(DVector3, DVector3, DVector3, DVector3, DVector3&, DVector3&);
65 
69  double dTargetLength;
70 
72  vector <double> CDC_GAIN_DOCA_PARS; // params to correct for gas deterioration spring 2018
73 
76 
77 
78  vector< vector< DCDCWire * > > cdcwires; // CDC Wires Referenced by [ring][straw]
79  vector<vector<double> >max_sag;
80  vector<vector<double> >sag_phi_offset;
81  int ChannelFromRingStraw[28][209];
82  int ROCIDFromRingStraw[28][209];
83  int SlotFromRingStraw[28][209];
84  double DOCACUT;
85  double PCUTL, PCUTH;
87 
88  vector<TH2D*> cdc_measured_ring; //Filled with total actually detected before division at end
89  vector<TH2D*> cdc_expected_ring; // Contains total number of expected hits by DOCA
90  map<int, vector<TH2D*> > cdc_measured_ringmap; //int: DOCA bin //vector: total + rings
91  map<int, vector<TH2D*> > cdc_expected_ringmap; //int: DOCA bin
92 
93  vector<TH2D*> cdc_measured_with_dedx_ring; //Filled with total actually detected before division at end
94  map<int, vector<TH2D*> > cdc_measured_with_dedx_ringmap; //int: DOCA bin //vector: total + rings
95 
96 
98  TH1I * hChi2OverNDF;
99  TH2I *hResVsT;
100 
101 
102 
103 
104 };
105 
106 #endif // _JEventProcessor_CDC_Efficiency_
107 
The DTrackFitter class is a base class for different charged track fitting algorithms. It does not actually fit the track itself, but provides the interface and some common support features most algorthims will need to implement.
Definition: DTrackFitter.h:61
TVector3 DVector3
Definition: DVector3.h:14
map< int, vector< TH2D * > > cdc_expected_ringmap
map< int, vector< TH2D * > > cdc_measured_ringmap
const DTrackFitter * fitter
vector< vector< DCDCWire * > > cdcwires
map< int, vector< TH2D * > > cdc_measured_with_dedx_ringmap