#include <AltModuleSliceQualityCheck.h>
Inheritance diagram for AltModuleSliceQualityCheck:

____________________________________________________________________________
AltReco
Costas Andreopoulos <C.V.Andreopoulos@rl.ac.uk> CCLRC, Rutherford Appleton Laboratory January 05, 2004 ____________________________________________________________________________
Definition at line 31 of file AltModuleSliceQualityCheck.h.
|
|
Definition at line 37 of file AltModuleSliceQualityCheck.cxx. References MSG. 00037 : 00038 fSlicePurity ("fSlicePurity", "Slice Purity", 00039 50, 0.0, 1.0), 00040 fSliceCompleteness ("fSliceCompleteness", "Slice Completeness", 00041 50, 0.0, 1.0), 00042 fSlicePurityVsCompleteness ("fSlicePurityVsCompleteness", "Pur. Vs. Compl.", 00043 50, 0.0, 1.0, 50, 0.0, 1.0), 00044 fSlicePurityVsEnu ("fSlicePurityVsEnu", "Purity vs Enu", 00045 50, 0.0, 1.0, 30, 0.0, 30.0), 00046 fSliceCompletenessVsEnu ("fSliceCompletenessVsEnu", "Completeness vs Enu", 00047 50, 0.0, 1.0, 30, 0.0, 30.0), 00048 fSlicePurityVsEvis ("fSlicePurityVsEvis", "Purity vs Evis", 00049 50, 0.0, 1.0, 30, 0.0, 30.0), 00050 fSliceCompletenessVsEvis ("fSliceCompletenessVsEvis", "Completeness vs Evis", 00051 50, 0.0, 1.0, 30, 0.0, 30.0), 00052 fSlicePurityVsVtxX ("fSlicePurityVsVtxX", "Purity vs x-vtx", 00053 50, 0.0, 1.0, 200, -5.0, 5.0), 00054 fSliceCompletenessVsVtxX ("fSliceCompletenessVsVtxX", "Completeness vs x-vtx", 00055 50, 0.0, 1.0, 200, -5.0, 5.0), 00056 fSlicePurityVsVtxY ("fSlicePurityVsVtxY", "Purity vs y-vtx", 00057 50, 0.0, 1.0, 200, -5.0, 5.0), 00058 fSliceCompletenessVsVtxY ("fSliceCompletenessVsVtxY", "Completeness vs y-vtx", 00059 50, 0.0, 1.0, 200, -5.0, 5.0), 00060 fSlicePurityVsVtxZ ("fSlicePurityVsVtxZ", "Purity vs z-vtx", 00061 50, 0.0, 1.0, 200, 0.0, 10.0), 00062 fSliceCompletenessVsVtxZ ("fSliceCompletenessVsVtxZ", "Completeness vs z-vtx", 00063 50, 0.0, 1.0, 200, 0.0, 10.0), 00064 fSlicePurityVsKinX ("fSlicePurityVsKinX", "Purity vs x", 00065 50, 0.0, 1.0, 50, 0.0, 1.0), 00066 fSliceCompletenessVsKinX ("fSliceCompletenessVsKinX", "Completeness vs x", 00067 50, 0.0, 1.0, 50, 0.0, 1.0), 00068 fSlicePurityVsKinY ("fSlicePurityVsKinY", "Purity vs y", 00069 50, 0.0, 1.0, 50, 0.0, 1.0), 00070 fSliceCompletenessVsKinY ("fSliceCompletenessVsKinY", "Completeness vs y", 00071 50, 0.0, 1.0, 50, 0.0, 1.0), 00072 fSlicePurityVsKinQ2 ("fSlicePurityVsKinQ2", "Purity vs Q2", 00073 50, 0.0, 1.0, 30, 0.0, 30.0), 00074 fSliceCompletenessVsKinQ2 ("fSliceCompletenessVsKinQ2","Completeness vs Q2", 00075 50, 0.0, 1.0, 30, 0.0, 30.0), 00076 fSlicePurityVsKinW ("fSlicePurityVsKinW", "Purity vs Q2", 00077 50, 0.0, 1.0, 30, 0.0, 30.0), 00078 fSliceCompletenessVsKinW ("fSliceCompletenessVsKinW", "Completeness vs Q2", 00079 50, 0.0, 1.0, 30, 0.0, 30.0), 00080 fWriteHistos (true), 00081 fDrawHistos (false), 00082 fRootFileName ("slice_quality.root") 00083 { 00084 MSG("AltModule", Msg::kVerbose) << "AltModuleSliceQualityCheck::Ctor\n"; 00085 } //____________________________________________________________________________
|
|
|
Definition at line 87 of file AltModuleSliceQualityCheck.cxx. References MSG. 00088 {
00089 MSG("AltModule", Msg::kVerbose) << "AltModuleSliceQualityCheck::Dtor\n";
00090 }
|
|
|
Implement this for read only access to the MomNavigator Reimplemented from JobCModule. Definition at line 123 of file AltModuleSliceQualityCheck.cxx. References DrawHistos(), CandRecord::FindCandHandle(), fSliceCompleteness, fSliceCompletenessVsEnu, fSliceCompletenessVsEvis, fSliceCompletenessVsKinQ2, fSliceCompletenessVsKinW, fSliceCompletenessVsKinX, fSliceCompletenessVsKinY, fSliceCompletenessVsVtxX, fSliceCompletenessVsVtxY, fSliceCompletenessVsVtxZ, fSlicePurity, fSlicePurityVsCompleteness, fSlicePurityVsEnu, fSlicePurityVsEvis, fSlicePurityVsKinQ2, fSlicePurityVsKinW, fSlicePurityVsKinX, fSlicePurityVsKinY, fSlicePurityVsVtxX, fSlicePurityVsVtxY, fSlicePurityVsVtxZ, TruthHelper::GetBestSliceNeuMatch(), CandHandle::GetDaughterIterator(), MomNavigator::GetFragment(), CandHandle::GetNDaughters(), TruthHelper::GetP4Neu(), IsRubbishSlice(), MSG, JobCResult::SetFailed(), JobCResult::SetWarning(), TruthHelper::SliceCompleteness(), TruthHelper::SlicePurity(), and WriteHistos(). 00124 {
00125 MSG("AltModule", Msg::kVerbose) << "AltModuleSliceQualityCheck::Ana\n";
00126
00127 JobCResult result(JobCResult::kPassed);
00128
00129 //-- Find PrimaryCandidateRecord fragment in MOM & check it is not null.
00130
00131 CandRecord *cdrec = dynamic_cast<CandRecord *>
00132 (mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00133 if (cdrec == 0) {
00134 MSG("AltModule", Msg::kWarning)
00135 << "NULL PrimaryCandidateRecord pointer" << endl;
00136 result.SetWarning().SetFailed();
00137 return result;
00138 }
00139
00140 //-- Get a handle to CandSliceList (previous step reconstruction objects).
00141
00142 MSG("AltModule", Msg::kDebug)
00143 << "Asking PrimaryCandidateRecord for CaldSliceSRListHandle" << endl;
00144
00145 CandSliceListHandle * cslh = dynamic_cast<CandSliceListHandle *>
00146 (cdrec->FindCandHandle("CandSliceSRListHandle"));
00147
00148 //-- Require CandSliceList to exist & number of CandSlices to be non-zero
00149
00150 if (!cslh) {
00151 MSG("AltModule", Msg::kDebug) << "NULL CandSliceListHandle ptr" << endl;
00152 result.SetFailed();
00153 return result;
00154
00155 } else {
00156 if(cslh->GetNDaughters() < 1) {
00157 MSG("AltModule", Msg::kDebug) << "Empty CandSlice list." << endl;
00158 result.SetFailed();
00159 return result;
00160 }
00161 }
00162
00163 //-- Get a Truth Helper -- obviously only use this module with Monte Carlo
00164
00165 TruthHelper truth_helper(mom);
00166
00167 //-- Get an iterator over slices, loop over them and fill in histograms
00168
00169 CandSliceHandleItr slice_iter ( cslh->GetDaughterIterator() );
00170
00171 int islice = 0;
00172
00173 while( CandSliceHandle * slice = slice_iter.Ptr() ) {
00174
00175 if( !IsRubbishSlice(slice) ) {
00176
00177 int neu_id = truth_helper.GetBestSliceNeuMatch(*slice);
00178
00179 float purity = truth_helper.SlicePurity(*slice);
00180 float completeness = truth_helper.SliceCompleteness(*slice);
00181 float E = (truth_helper.GetP4Neu(neu_id))[3];
00182 float Evis = 0;
00183 float vtx_x = 0;
00184 float vtx_y = 0;
00185 float vtx_z = 0; // get these
00186 float x = 0;
00187 float y = 0;
00188 float Q2 = 0;
00189 float W = 0;
00190
00191 MSG("AltModule", Msg::kVerbose)
00192 << "- slice[" << islice++ << "] purity = " << purity
00193 << ", completeness = " << completeness << endl;
00194
00195 fSlicePurity. Fill ( purity );
00196 fSliceCompleteness. Fill ( completeness );
00197 fSlicePurityVsCompleteness.Fill ( purity, completeness );
00198 fSlicePurityVsEnu. Fill ( purity , E );
00199 fSliceCompletenessVsEnu. Fill ( completeness , E );
00200 fSlicePurityVsEvis. Fill ( purity , Evis );
00201 fSliceCompletenessVsEvis. Fill ( completeness , Evis );
00202 fSlicePurityVsVtxX. Fill ( purity , vtx_x );
00203 fSliceCompletenessVsVtxX. Fill ( completeness , vtx_x );
00204 fSlicePurityVsVtxY. Fill ( purity , vtx_y );
00205 fSliceCompletenessVsVtxY. Fill ( completeness , vtx_y );
00206 fSlicePurityVsVtxZ. Fill ( purity , vtx_z );
00207 fSliceCompletenessVsVtxZ. Fill ( completeness , vtx_z );
00208 fSlicePurityVsKinX. Fill ( purity , x );
00209 fSliceCompletenessVsKinX. Fill ( completeness , x );
00210 fSlicePurityVsKinY. Fill ( purity , y );
00211 fSliceCompletenessVsKinY. Fill ( completeness , y );
00212 fSlicePurityVsKinQ2. Fill ( purity , Q2 );
00213 fSliceCompletenessVsKinQ2. Fill ( completeness , Q2 );
00214 fSlicePurityVsKinW. Fill ( purity , W );
00215 fSliceCompletenessVsKinW. Fill ( completeness , W );
00216 }
00217 slice_iter.Next();
00218 }
00219
00220 if(fWriteHistos) WriteHistos();
00221 if(fDrawHistos) DrawHistos ();
00222
00223 return result;
00224 }
|
|
|
Implement for notification of begin of job Reimplemented from JobCModule. Definition at line 92 of file AltModuleSliceQualityCheck.cxx. References MSG. 00093 {
00094 MSG("AltModule", Msg::kVerbose) << "AltModuleSliceQualityCheck::BeginJob\n";
00095 }
|
|
|
Return the actual configuration. If your module directly pulls its configuration from the fConfig Registry, you don't need to override this. Override if you have local config variables. Reimplemented from JobCModule. Definition at line 112 of file AltModuleSliceQualityCheck.cxx. References fDrawHistos, fRootFileName, fWriteHistos, and Registry::Get(). 00113 {
00114 int tmpi = 0;
00115 const char * tmpc = 0;
00116 //double tmpd = 0;
00117
00118 if (r.Get("fWriteHistos", tmpi)) fWriteHistos = tmpi;
00119 if (r.Get("fDrawHistos", tmpi)) fDrawHistos = tmpi;
00120 if (r.Get("fRootFileName", tmpc)) fRootFileName = string(tmpc);
00121 }
|
|
|
Get the default configuration registry. This should normally be overridden. One useful idiom is to implement it like: const Registry& MyModule::DefaultConfig() const { static Registry cfg; // never is destroyed if (cfg.Size()) return cfg; // already filled it // set defaults: cfg.Set("TheAnswer",42); cfg.Set("Units","unknown"); return cfg; } Reimplemented from JobCModule. Definition at line 97 of file AltModuleSliceQualityCheck.cxx. References Registry::LockValues(), MSG, Registry::Set(), and Registry::UnLockValues(). 00098 {
00099 MSG("AltModule", Msg::kDebug)
00100 << "AltModuleSliceQualityCheck::DefaultConfig" << endl;
00101 static Registry r;
00102
00103 r.UnLockValues();
00104 r.Set("WriteHistos", true);
00105 r.Set("DrawHistos", false);
00106 r.Set("RootFileName", "slice_quality.root");
00107 r.LockValues();
00108
00109 return r;
00110 }
|
|
|
Definition at line 267 of file AltModuleSliceQualityCheck.cxx. References fSliceCompleteness, and fSlicePurity. Referenced by Ana(). 00268 {
00269 TCanvas * canvas = new TCanvas("canvas","purity/completeness",20,20,600,600);
00270
00271 canvas->SetFillColor(0);
00272 canvas->SetBorderMode(0);
00273
00274 canvas->Divide(1,2);
00275
00276 canvas->cd(1);
00277 fSlicePurity.Draw();
00278 fSlicePurity.GetXaxis()->SetTitle("slice purity");
00279
00280 canvas->cd(2);
00281 fSliceCompleteness.Draw();
00282 fSlicePurity.GetXaxis()->SetTitle("slice completeness");
00283
00284 canvas->Update();
00285
00286 delete canvas;
00287 }
|
|
|
Implement to handle a JobCommand Reimplemented from JobCModule. Definition at line 226 of file AltModuleSliceQualityCheck.cxx. References JobCommand::HaveCmd(), and MSG. 00227 {
00228 // Process configuration commands
00229 MSG("AltModule", Msg::kDebug)
00230 << "AltModuleSliceQualityCheck::HandleCommand" << endl;
00231
00232 if (cmd->HaveCmd() ) {
00233 MSG("AltModule", Msg::kWarning)
00234 << "Use Config(const Registry & r) instead" << endl;
00235 }
00236 }
|
|
|
Definition at line 289 of file AltModuleSliceQualityCheck.cxx. References CandHandle::GetDaughterIterator(), and CandStripHandle::GetPlane(). Referenced by Ana(). 00290 {
00291 // Returns true if all hit strips in this slice are in the muon spectrometer.
00292 // This can only happen for the 'rubbish slice' I am using to pass unmatched
00293 // muon spectrometer hits to subsequent reconstructon stages.
00294 // The user can switch off this 'feature' and make proper slices out of these
00295 // hits... but since they are of no significance and they are not reconstructed,
00296 // anyway, at later reco. stages, the default action is to pack them into the
00297 // 'rubbish slice'. For the quality check purposes this slice is excluded.
00298
00299 bool is_rubbish = true;
00300
00301 CandStripHandleItr strip_iter ( slice->GetDaughterIterator() );
00302
00303 while( CandStripHandle * strip = strip_iter.Ptr() ) {
00304
00305 if(strip->GetPlane() < 120) return false;
00306
00307 strip_iter.Next();
00308 }
00309
00310 return is_rubbish;
00311 }
|
|
|
Definition at line 238 of file AltModuleSliceQualityCheck.cxx. References fRootFileName, fSliceCompleteness, fSliceCompletenessVsEnu, fSliceCompletenessVsEvis, fSliceCompletenessVsKinQ2, fSliceCompletenessVsKinW, fSliceCompletenessVsKinX, fSliceCompletenessVsKinY, fSliceCompletenessVsVtxX, fSliceCompletenessVsVtxY, fSliceCompletenessVsVtxZ, fSlicePurity, fSlicePurityVsCompleteness, fSlicePurityVsEnu, fSlicePurityVsEvis, fSlicePurityVsKinQ2, fSlicePurityVsKinW, fSlicePurityVsKinX, fSlicePurityVsKinY, fSlicePurityVsVtxX, fSlicePurityVsVtxY, and fSlicePurityVsVtxZ. Referenced by Ana(). 00239 {
00240 TFile root_file(fRootFileName.c_str(), "RECREATE");
00241
00242 fSlicePurity. Write ("slice_purity");
00243 fSliceCompleteness. Write ("slice_completeness");
00244 fSlicePurityVsCompleteness.Write ("slice_purity_vs_completeness");
00245 fSlicePurityVsEnu. Write ("slice_purity_Enu");
00246 fSliceCompletenessVsEnu. Write ("slice_completeness_Enu");
00247 fSlicePurityVsEvis. Write ("slice_purity_Evis");
00248 fSliceCompletenessVsEvis. Write ("slice_completeness_Evis");
00249 fSlicePurityVsVtxX. Write ("slice_purity_vtxx");
00250 fSliceCompletenessVsVtxX. Write ("slice_completeness_vtxx");
00251 fSlicePurityVsVtxY. Write ("slice_purity_vtxy");
00252 fSliceCompletenessVsVtxY. Write ("slice_completeness_vtxy");
00253 fSlicePurityVsVtxZ. Write ("slice_purity_vtxz");
00254 fSliceCompletenessVsVtxZ. Write ("slice_completeness_vtxz");
00255 fSlicePurityVsKinX. Write ("slice_purity_x");
00256 fSliceCompletenessVsKinX. Write ("slice_completeness_x");
00257 fSlicePurityVsKinY. Write ("slice_purity_y");
00258 fSliceCompletenessVsKinY. Write ("slice_completeness_y");
00259 fSlicePurityVsKinQ2. Write ("slice_purity_Q2");
00260 fSliceCompletenessVsKinQ2. Write ("slice_completeness_Q2");
00261 fSlicePurityVsKinW. Write ("slice_purity_W");
00262 fSliceCompletenessVsKinW. Write ("slice_completeness_W");
00263
00264 root_file.Close();
00265 }
|
|
|
Definition at line 72 of file AltModuleSliceQualityCheck.h. Referenced by Config(). |
|
|
Definition at line 73 of file AltModuleSliceQualityCheck.h. Referenced by Config(), and WriteHistos(). |
|
|
Definition at line 50 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), DrawHistos(), and WriteHistos(). |
|
|
Definition at line 53 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 55 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 67 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 69 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 63 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 65 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 57 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 59 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 61 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 49 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), DrawHistos(), and WriteHistos(). |
|
|
Definition at line 51 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 52 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 54 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 66 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 68 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 62 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 64 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 56 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 58 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 60 of file AltModuleSliceQualityCheck.h. Referenced by Ana(), and WriteHistos(). |
|
|
Definition at line 71 of file AltModuleSliceQualityCheck.h. Referenced by Config(). |
1.3.9.1