Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TrackEff2Selector.C
Go to the documentation of this file.
1 #define TrackEff2Selector_cxx
2 // The class definition in TrackEff2Selector.h has been generated automatically
3 // by the ROOT utility TTree::MakeSelector(). This class is derived
4 // from the ROOT class TSelector. For more information on the TSelector
5 // framework see $ROOTSYS/README/README.SELECTOR or the ROOT User Manual.
6 
7 // The following methods are defined in this file:
8 // Begin(): called every time a loop on the tree starts,
9 // a convenient place to create your histograms.
10 // SlaveBegin(): called after Begin(), when on PROOF called only on the
11 // slave servers.
12 // Process(): called for each event, in this function you decide what
13 // to read and fill your histograms.
14 // SlaveTerminate: called at the end of the loop on the tree, when on PROOF
15 // called only on the slave servers.
16 // Terminate(): called at the end of the loop on the tree,
17 // a convenient place to draw/fit your histograms.
18 //
19 // To use this file, try the following session on your Tree T:
20 //
21 // Root > T->Process("TrackEff2Selector.C")
22 // Root > T->Process("TrackEff2Selector.C","some options")
23 // Root > T->Process("TrackEff2Selector.C+")
24 //
25 
26 #include "TrackEff2Selector.h"
27 #include <TH2.h>
28 #include <TStyle.h>
29 
30 
31 void TrackEff2Selector::Begin(TTree * /*tree*/)
32 {
33  // The Begin() function is called at the start of the query.
34  // When running with PROOF Begin() is only called on the client.
35  // The tree argument is deprecated (on PROOF 0 is passed).
36 
37  TString option = GetOption();
38 
39  dOutputFile = new TFile("dh_TrackEff2Hists.root", "RECREATE");
40 
41  unsigned int locNumPBins = 100;
42  unsigned int locNumThetaBins = 140;
43  unsigned int locNumDeltaPOverPBins = 1000;
44  unsigned int locNumDeltaPtOverPtBins = 1000;
45  unsigned int locNumDeltaThetaBins = 480;
46  unsigned int locNumDeltaPhiBins = 800;
47  unsigned int locNumConLevBins = 500;
48 
49  double locMinP = 0.0, locMaxP = 2.0;
50  double locMinTheta = 0.0, locMaxTheta = 140.0;
51  double locMinConLev = 0.0, locMaxConLev = 1.0;
52 
53  double locMinDeltaPOverP = -0.4, locMaxDeltaPOverP = 0.4; //more for wrong charge!
54  double locMinDeltaPtOverPt = -0.4, locMaxDeltaPtOverPt = 0.4;
55  double locMinDeltaTheta = -12.0, locMaxDeltaTheta = 12.0;
56  double locMinDeltaPhi = -40.0, locMaxDeltaPhi = 40.0;
57 
58  double locMinDeltaPOverP_WrongCharge = -50.0, locMaxDeltaPOverP_WrongCharge = 50.0;
59  double locMinDeltaPtOverPt_WrongCharge = -50.0, locMaxDeltaPtOverPt_WrongCharge = 50.0;
60  double locMinDeltaTheta_WrongCharge = -360.0, locMaxDeltaTheta_WrongCharge = 360.0;
61  double locMinDeltaPhi_WrongCharge = -360.0, locMaxDeltaPhi_WrongCharge = 360.0;
62 
63  //EFFICIENCIES
64  dSelectorHist_TrackEff2_CandidateReconstructed = new TH2F("dSelectorHist_TrackEff2_CandidateReconstructed", "Reconstructed Track Candidates;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
65  dSelectorHist_TrackEff2_CandidateMissing = new TH2F("dSelectorHist_TrackEff2_CandidateMissing", "Missing Track Candidates;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
66  dSelectorHist_TrackEff2_WireBasedReconstructed = new TH2F("dSelectorHist_TrackEff2_WireBasedReconstructed", "Reconstructed Wire Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
67  dSelectorHist_TrackEff2_WireBasedMissing = new TH2F("dSelectorHist_TrackEff2_WireBasedMissing", "Missing Wire Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
68  dSelectorHist_TrackEff2_TimeBasedReconstructed = new TH2F("dSelectorHist_TrackEff2_TimeBasedReconstructed", "Reconstructed Time Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
69  dSelectorHist_TrackEff2_TimeBasedMissing = new TH2F("dSelectorHist_TrackEff2_TimeBasedMissing", "Missing Time Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
70 
71  dSelectorHist_TrackEff2_CandidateChargeCorrect = new TH2F("dSelectorHist_TrackEff2_CandidateChargeCorrect", "Correct Charge Track Candidates;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
72  dSelectorHist_TrackEff2_CandidateChargeWrong = new TH2F("dSelectorHist_TrackEff2_CandidateChargeWrong", "Incorrect Charge Track Candidates;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
73  dSelectorHist_TrackEff2_WireBasedChargeCorrect = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeCorrect", "Correct Charge Wire Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
74  dSelectorHist_TrackEff2_WireBasedChargeWrong = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeWrong", "Incorrect Charge Wire Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
75  dSelectorHist_TrackEff2_TimeBasedChargeCorrect = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeCorrect", "Correct Charge Time Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
76  dSelectorHist_TrackEff2_TimeBasedChargeWrong = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeWrong", "Incorrect Charge Time Based Tracks;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
77 
78  //CONFIDENCE LEVEL
79  dSelectorHist_TrackEff2_WireBasedConLev = new TH1F("dSelectorHist_TrackEff2_WireBasedConLev", "Correct Charge Wire Based Tracks;Wire Based Track Reconstruction Confidence Level", locNumConLevBins, locMinConLev, locMaxConLev);
80  dSelectorHist_TrackEff2_TimeBasedConLev = new TH1F("dSelectorHist_TrackEff2_TimeBasedConLev", "Correct Charge Time Based Tracks;Time Based Track Reconstruction Confidence Level", locNumConLevBins, locMinConLev, locMaxConLev);
81  dSelectorHist_TrackEff2_WireBasedLowConLev = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeCorrectLowConLev", "Correct Charge Wire Based Tracks, Confidence Level <= 0.01;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
82  dSelectorHist_TrackEff2_WireBasedNonLowConLev = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeCorrectNonLowConLev", "Correct Charge Wire Based Tracks, Confidence Level > 0.01;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
83  dSelectorHist_TrackEff2_TimeBasedLowConLev = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeCorrectLowConLev", "Correct Charge Time Based Tracks, Confidence Level <= 0.01;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
84  dSelectorHist_TrackEff2_TimeBasedNonLowConLev = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeCorrectNonLowConLev", "Correct Charge Time Based Tracks, Confidence Level > 0.01;#theta#circ;p (GeV/c)", locNumThetaBins, locMinTheta, locMaxTheta, locNumPBins, locMinP, locMaxP);
85 
86 
87  //CHARGE RECONSTRUCTION DETAIL
88  dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPOverPVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPOverPVsTheta", "Correct Charge Track Candidates;#theta#circ;#Deltap/p", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPOverPBins, locMinDeltaPOverP, locMaxDeltaPOverP);
89  dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPOverPVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPOverPVsTheta", "Incorrect Charge Track Candidates;#theta#circ;#Deltap/p", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPOverPBins, locMinDeltaPOverP_WrongCharge, locMaxDeltaPOverP_WrongCharge);
90  dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPOverPVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPOverPVsTheta", "Correct Charge Wire Based Tracks;#theta#circ;#Deltap/p", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPOverPBins, locMinDeltaPOverP, locMaxDeltaPOverP);
91  dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPOverPVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPOverPVsTheta", "Incorrect Charge Wire Based Tracks;#theta#circ;#Deltap/p", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPOverPBins, locMinDeltaPOverP_WrongCharge, locMaxDeltaPOverP_WrongCharge);
92  dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPOverPVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPOverPVsTheta", "Correct Charge Time Based Tracks;#theta#circ;#Deltap/p", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPOverPBins, locMinDeltaPOverP, locMaxDeltaPOverP);
93  dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPOverPVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPOverPVsTheta", "Incorrect Charge Time Based Tracks;#theta#circ;#Deltap/p", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPOverPBins, locMinDeltaPOverP_WrongCharge, locMaxDeltaPOverP_WrongCharge);
94 
95  dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPtOverPtVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPtOverPtVsTheta", "Correct Charge Track Candidates;#theta#circ;#Deltap_{T}/p_{T}", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPtOverPtBins, locMinDeltaPtOverPt, locMaxDeltaPtOverPt);
96  dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPtOverPtVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPtOverPtVsTheta", "Incorrect Charge Track Candidates;#theta#circ;#Deltap_{T}/p_{T}", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPtOverPtBins, locMinDeltaPtOverPt_WrongCharge, locMaxDeltaPtOverPt_WrongCharge);
97  dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPtOverPtVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPtOverPtVsTheta", "Correct Charge Wire Based Tracks;#theta#circ;#Deltap_{T}/p_{T}", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPtOverPtBins, locMinDeltaPtOverPt, locMaxDeltaPtOverPt);
98  dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPtOverPtVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPtOverPtVsTheta", "Incorrect Charge Wire Based Tracks;#theta#circ;#Deltap_{T}/p_{T}", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPtOverPtBins, locMinDeltaPtOverPt_WrongCharge, locMaxDeltaPtOverPt_WrongCharge);
99  dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPtOverPtVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPtOverPtVsTheta", "Correct Charge Time Based Tracks;#theta#circ;#Deltap_{T}/p_{T}", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPtOverPtBins, locMinDeltaPtOverPt, locMaxDeltaPtOverPt);
100  dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPtOverPtVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPtOverPtVsTheta", "Incorrect Charge Time Based Tracks;#theta#circ;#Deltap_{T}/p_{T}", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPtOverPtBins, locMinDeltaPtOverPt_WrongCharge, locMaxDeltaPtOverPt_WrongCharge);
101 
102  dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaThetaVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaThetaVsTheta", "Correct Charge Track Candidates;#theta#circ;#Delta#theta#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaThetaBins, locMinDeltaTheta, locMaxDeltaTheta);
103  dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaThetaVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaThetaVsTheta", "Incorrect Charge Track Candidates;#theta#circ;#Delta#theta#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaThetaBins, locMinDeltaTheta_WrongCharge, locMaxDeltaTheta_WrongCharge);
104  dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaThetaVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaThetaVsTheta", "Correct Charge Wire Based Tracks;#theta#circ;#Delta#theta#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaThetaBins, locMinDeltaTheta, locMaxDeltaTheta);
105  dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaThetaVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaThetaVsTheta", "Incorrect Charge Wire Based Tracks;#theta#circ;#Delta#theta#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaThetaBins, locMinDeltaTheta_WrongCharge, locMaxDeltaTheta_WrongCharge);
106  dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaThetaVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaThetaVsTheta", "Correct Charge Time Based Tracks;#theta#circ;#Delta#theta#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaThetaBins, locMinDeltaTheta, locMaxDeltaTheta);
107  dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaThetaVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaThetaVsTheta", "Incorrect Charge Time Based Tracks;#theta#circ;#Delta#theta#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaThetaBins, locMinDeltaTheta_WrongCharge, locMaxDeltaTheta_WrongCharge);
108 
109  dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPhiVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPhiVsTheta", "Correct Charge Track Candidates;#theta#circ;#Delta#phi#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPhiBins, locMinDeltaPhi, locMaxDeltaPhi);
110  dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPhiVsTheta = new TH2F("dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPhiVsTheta", "Incorrect Charge Track Candidates;#theta#circ;#Delta#phi#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPhiBins, locMinDeltaPhi_WrongCharge, locMaxDeltaPhi_WrongCharge);
111  dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPhiVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPhiVsTheta", "Correct Charge Wire Based Tracks;#theta#circ;#Delta#phi#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPhiBins, locMinDeltaPhi, locMaxDeltaPhi);
112  dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPhiVsTheta = new TH2F("dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPhiVsTheta", "Incorrect Charge Wire Based Tracks;#theta#circ;#Delta#phi#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPhiBins, locMinDeltaPhi_WrongCharge, locMaxDeltaPhi_WrongCharge);
113  dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPhiVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPhiVsTheta", "Correct Charge Time Based Tracks;#theta#circ;#Delta#phi#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPhiBins, locMinDeltaPhi, locMaxDeltaPhi);
114  dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPhiVsTheta = new TH2F("dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPhiVsTheta", "Incorrect Charge Time Based Tracks;#theta#circ;#Delta#phi#circ", locNumThetaBins, locMinTheta, locMaxTheta, locNumDeltaPhiBins, locMinDeltaPhi_WrongCharge, locMaxDeltaPhi_WrongCharge);
115 }
116 
117 void TrackEff2Selector::SlaveBegin(TTree * /*tree*/)
118 {
119  // The SlaveBegin() function is called after the Begin() function.
120  // When running with PROOF SlaveBegin() is called on each slave server.
121  // The tree argument is deprecated (on PROOF 0 is passed).
122 
123  TString option = GetOption();
124 
125 }
126 
127 Bool_t TrackEff2Selector::Process(Long64_t entry)
128 {
129  // The Process() function is called for each entry in the tree (or possibly
130  // keyed object in the case of PROOF) to be processed. The entry argument
131  // specifies which entry in the currently loaded tree is to be processed.
132  // It can be passed to either TrackEff2Selector::GetEntry() or TBranch::GetEntry()
133  // to read either all or the required parts of the data. When processing
134  // keyed objects with PROOF, the object is already loaded and is available
135  // via the fObject pointer.
136  //
137  // This function should contain the "body" of the analysis. It can contain
138  // simple or elaborate selection criteria, run algorithms on the data
139  // of the event and typically fill histograms.
140  //
141  // The processing can be stopped by calling Abort().
142  //
143  // Use fStatus to set the return value of TTree::Process().
144  //
145  // The return value is currently not used.
146 
147 
148 /*
149  if(isreconstructable == false)
150  return kTRUE; //not interested...
151 */
152 
153  GetEntry(entry);
154  if((entry % 1000) == 0)
155  cout << "entry = " << entry << endl;
156 
157  TVector3 locP3_Thrown(pthrown_fX, pthrown_fY, pthrown_fZ);
158  TVector3 locP3_TimeBased(pfit_fX, pfit_fY, pfit_fZ);
159  TVector3 locP3_WireBased(pfit_wire_fX, pfit_wire_fY, pfit_wire_fZ);
160  TVector3 locP3_Candidate(pcan_fX, pcan_fY, pcan_fZ);
161  double locThrownTheta_Degrees = locP3_Thrown.Theta()*180.0/TMath::Pi();
162  double locThrownMomentum = locP3_Thrown.Mag();
163  double delta_p_over_p_can = (locP3_Candidate.Mag() - locThrownMomentum)/locThrownMomentum;
164  double delta_p_over_p_wire = (locP3_WireBased.Mag() - locThrownMomentum)/locThrownMomentum;
165  double delta_p_over_p = (locP3_TimeBased.Mag() - locThrownMomentum)/locThrownMomentum;
166  double locFOM_WireBased = TMath::Prob(trk_chisq_wb, trk_Ndof_wb);
167  double locFOM_TimeBased = TMath::Prob(trk_chisq, trk_Ndof);
168  double locFOM_Cutoff = 0.01;
169  double delta_phi_can_deg = delta_phi_can*180.0/(1000.0*TMath::Pi());
170  double delta_phi_wire_deg = delta_phi_wire*180.0/(1000.0*TMath::Pi());
171  double delta_phi_deg = delta_phi*180.0/(1000.0*TMath::Pi());
172  double delta_theta_can_deg = delta_theta_can*180.0/(1000.0*TMath::Pi());
173  double delta_theta_wire_deg = delta_theta_wire*180.0/(1000.0*TMath::Pi());
174  double delta_theta_deg = delta_theta*180.0/(1000.0*TMath::Pi());
175 
176  //TRACK RECONSTRUCTION EFFICIENCIES
178  dSelectorHist_TrackEff2_CandidateReconstructed->Fill(locThrownTheta_Degrees, locThrownMomentum);
179  else
180  dSelectorHist_TrackEff2_CandidateMissing->Fill(locThrownTheta_Degrees, locThrownMomentum);
183  dSelectorHist_TrackEff2_WireBasedReconstructed->Fill(locThrownTheta_Degrees, locThrownMomentum);
184  else
185  dSelectorHist_TrackEff2_WireBasedMissing->Fill(locThrownTheta_Degrees, locThrownMomentum);
186  }
189  dSelectorHist_TrackEff2_TimeBasedReconstructed->Fill(locThrownTheta_Degrees, locThrownMomentum);
190  else
191  dSelectorHist_TrackEff2_TimeBasedMissing->Fill(locThrownTheta_Degrees, locThrownMomentum);
192  }
193 
194  //CHARGE RECONSTRUCTION EFFICIENCIES
196  if(fabs(q_thrown - q_candidate) < 0.1)
197  dSelectorHist_TrackEff2_CandidateChargeCorrect->Fill(locThrownTheta_Degrees, locThrownMomentum);
198  else
199  dSelectorHist_TrackEff2_CandidateChargeWrong->Fill(locThrownTheta_Degrees, locThrownMomentum);
200  }
202  if(fabs(q_thrown - q_wirebased) < 0.1)
203  dSelectorHist_TrackEff2_WireBasedChargeCorrect->Fill(locThrownTheta_Degrees, locThrownMomentum);
204  else
205  dSelectorHist_TrackEff2_WireBasedChargeWrong->Fill(locThrownTheta_Degrees, locThrownMomentum);
206  }
208  if(fabs(q_thrown - q_timebased) < 0.1)
209  dSelectorHist_TrackEff2_TimeBasedChargeCorrect->Fill(locThrownTheta_Degrees, locThrownMomentum);
210  else
211  dSelectorHist_TrackEff2_TimeBasedChargeWrong->Fill(locThrownTheta_Degrees, locThrownMomentum);
212  }
213 
214  //CONFIDENCE LEVEL
215  if((dTrackReconstructedFlag_WireBased == true) && (fabs(q_thrown - q_wirebased) < 0.1)){
216  dSelectorHist_TrackEff2_WireBasedConLev->Fill(locFOM_WireBased);
217  if(locFOM_WireBased <= locFOM_Cutoff)
218  dSelectorHist_TrackEff2_WireBasedLowConLev->Fill(locThrownTheta_Degrees, locThrownMomentum);
219  else
220  dSelectorHist_TrackEff2_WireBasedNonLowConLev->Fill(locThrownTheta_Degrees, locThrownMomentum);
221  }
222  if((dTrackReconstructedFlag_TimeBased == true) && (fabs(q_thrown - q_timebased) < 0.1)){
223  dSelectorHist_TrackEff2_TimeBasedConLev->Fill(locFOM_TimeBased);
224  if(locFOM_TimeBased <= locFOM_Cutoff)
225  dSelectorHist_TrackEff2_TimeBasedLowConLev->Fill(locThrownTheta_Degrees, locThrownMomentum);
226  else
227  dSelectorHist_TrackEff2_TimeBasedNonLowConLev->Fill(locThrownTheta_Degrees, locThrownMomentum);
228  }
229 
230  //CHARGE MIS-RECONSTRUCTION DELTAS
232  if(fabs(q_thrown - q_candidate) < 0.1){
233  dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPOverPVsTheta->Fill(locThrownTheta_Degrees, delta_p_over_p_can);
235  dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaThetaVsTheta->Fill(locThrownTheta_Degrees, delta_theta_can_deg);
236  dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPhiVsTheta->Fill(locThrownTheta_Degrees, delta_phi_can_deg);
237  }else{
238  dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPOverPVsTheta->Fill(locThrownTheta_Degrees, delta_p_over_p_can);
240  dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaThetaVsTheta->Fill(locThrownTheta_Degrees, delta_theta_can_deg);
241  dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPhiVsTheta->Fill(locThrownTheta_Degrees, delta_phi_can_deg);
242  }
243  }
245  if(fabs(q_thrown - q_wirebased) < 0.1){
246  dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPOverPVsTheta->Fill(locThrownTheta_Degrees, delta_p_over_p_wire);
248  dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaThetaVsTheta->Fill(locThrownTheta_Degrees, delta_theta_wire_deg);
249  dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPhiVsTheta->Fill(locThrownTheta_Degrees, delta_phi_wire_deg);
250  }else{
251  dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPOverPVsTheta->Fill(locThrownTheta_Degrees, delta_p_over_p_wire);
253  dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaThetaVsTheta->Fill(locThrownTheta_Degrees, delta_theta_wire_deg);
254  dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPhiVsTheta->Fill(locThrownTheta_Degrees, delta_phi_wire_deg);
255  }
256  }
258  if(fabs(q_thrown - q_timebased) < 0.1){
259  dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPOverPVsTheta->Fill(locThrownTheta_Degrees, delta_p_over_p);
261  dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaThetaVsTheta->Fill(locThrownTheta_Degrees, delta_theta_deg);
262  dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPhiVsTheta->Fill(locThrownTheta_Degrees, delta_phi_deg);
263  }else{
264  dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPOverPVsTheta->Fill(locThrownTheta_Degrees, delta_p_over_p);
266  dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaThetaVsTheta->Fill(locThrownTheta_Degrees, delta_theta_deg);
267  dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPhiVsTheta->Fill(locThrownTheta_Degrees, delta_phi_deg);
268  }
269  }
270 
271 
272 /*
273  //hist: deviation of measured values from true values at each level (in )
274 
275  bool dTrackReconstructedFlag_TimeBased;
276  TVector3 pfit;
277  double trk_chisq;
278  int trk_Ndof;
279  double delta_pt_over_pt;
280  double delta_theta; // mrad
281  double delta_phi; // mrad
282  int num_timebased;
283 
284 
285  Float_t q_thrown;
286  Int_t PID_thrown;
287  UInt_t pthrown_fUniqueID;
288  UInt_t pthrown_fBits;
289  Bool_t isreconstructable;
290  Int_t Nstereo;
291  Int_t Ncdc;
292  Int_t Nfdc;
293  Int_t NLR_bad_stereo;
294  Int_t NLR_bad;
295  Int_t PID_hypothesized;
296  Float_t q_hypothesized;
297  Float_t FOM_hypothesized;
298  Float_t q_timebased;
299  Int_t PID_timebased;
300  Bool_t dTrackReconstructedFlag_TimeBased;
301  Double_t trk_chisq;
302  Int_t trk_Ndof;
303  Double_t delta_pt_over_pt;
304  Double_t delta_theta;
305  Double_t delta_phi;
306  Int_t num_timebased;
307  Float_t q_wirebased;
308  Int_t PID_wirebased;
309  Bool_t dTrackReconstructedFlag_WireBased;
310  Double_t trk_chisq_wb;
311  Int_t trk_Ndof_wb;
312  Double_t delta_pt_over_pt_wire;
313  Double_t delta_theta_wire;
314  Double_t delta_phi_wire;
315  Int_t num_wirebased;
316  Float_t q_candidate;
317  Int_t PID_candidate;
318  Bool_t dTrackReconstructedFlag_Candidate;
319  Double_t delta_pt_over_pt_can;
320  Double_t delta_theta_can;
321  Double_t delta_phi_can;
322  Int_t num_candidates;
323 */
324  return kTRUE;
325 }
326 
328 {
329  // The SlaveTerminate() function is called after all entries or objects
330  // have been processed. When running with PROOF SlaveTerminate() is called
331  // on each slave server.
332 
333 }
334 
336 {
337  // The Terminate() function is the last function to be called during
338  // a query. It always runs on the client, it can be used to present
339  // the results graphically or save the results to file.
340 
341  dOutputFile->Write();
342 }
TH1F * dSelectorHist_TrackEff2_TimeBasedConLev
TH2F * dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPhiVsTheta
TH2F * dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPtOverPtVsTheta
TH2F * dSelectorHist_TrackEff2_WireBasedReconstructed
TH2F * dSelectorHist_TrackEff2_WireBasedChargeWrong
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPtOverPtVsTheta
TH2F * dSelectorHist_TrackEff2_WireBasedChargeCorrect
Bool_t dTrackReconstructedFlag_Candidate
TH2F * dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPtOverPtVsTheta
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeCorrect
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPhiVsTheta
TH2F * dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaPOverPVsTheta
TH2F * dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaThetaVsTheta
Double_t delta_pt_over_pt_can
TH2F * dSelectorHist_TrackEff2_WireBasedChargeWrong_DeltaThetaVsTheta
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
TH2F * dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPOverPVsTheta
TH2F * dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaThetaVsTheta
Bool_t dTrackReconstructedFlag_WireBased
TH2F * dSelectorHist_TrackEff2_TimeBasedReconstructed
TH2F * dSelectorHist_TrackEff2_CandidateChargeCorrect_DeltaPhiVsTheta
virtual void SlaveBegin(TTree *tree)
TH2F * dSelectorHist_TrackEff2_CandidateReconstructed
TH2F * dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPhiVsTheta
TH2F * dSelectorHist_TrackEff2_WireBasedMissing
TH2F * dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPOverPVsTheta
TH2F * dSelectorHist_TrackEff2_TimeBasedNonLowConLev
TH2F * dSelectorHist_TrackEff2_TimeBasedMissing
virtual void Terminate()
TH2F * dSelectorHist_TrackEff2_CandidateChargeCorrect
TH2F * dSelectorHist_TrackEff2_WireBasedNonLowConLev
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPOverPVsTheta
TH2F * dSelectorHist_TrackEff2_TimeBasedLowConLev
TH2F * dSelectorHist_TrackEff2_CandidateChargeWrong
Bool_t dTrackReconstructedFlag_TimeBased
Double_t delta_pt_over_pt_wire
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaThetaVsTheta
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPtOverPtVsTheta
virtual Bool_t Process(Long64_t entry)
TH2F * dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPhiVsTheta
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaThetaVsTheta
virtual void Begin(TTree *tree)
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeWrong
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeCorrect_DeltaPOverPVsTheta
TH1F * dSelectorHist_TrackEff2_WireBasedConLev
TH2F * dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPOverPVsTheta
TH2F * dSelectorHist_TrackEff2_TimeBasedChargeWrong_DeltaPhiVsTheta
TH2F * dSelectorHist_TrackEff2_WireBasedChargeCorrect_DeltaPtOverPtVsTheta
TH2F * dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaPtOverPtVsTheta
TH2F * dSelectorHist_TrackEff2_CandidateChargeWrong_DeltaThetaVsTheta
virtual void SlaveTerminate()
TH2F * dSelectorHist_TrackEff2_CandidateMissing
TH2F * dSelectorHist_TrackEff2_WireBasedLowConLev