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

Public Member Functions | |
| RemoveMuon () | |
| ~RemoveMuon () | |
| void | BeginJob () |
| void | EndJob () |
| void | BeginFile () |
| void | EndFile () |
| JobCResult | Ana (const MomNavigator *mom) |
| JobCResult | Reco (MomNavigator *mom) |
| const Registry & | DefaultConfig () const |
| void | Config (const Registry &r) |
Private Attributes | |
| std::string | fAlgName |
| std::string | fAlgConfig |
| std::string | fNameListOut |
| std::string | fAlgOutputName |
| std::string | fAlgOutputConfig |
| int | fMakeNtp |
| std::string | fNtpFileName |
| std::string | fNtpTreeName |
| std::string | fTrackListName |
| TFile * | fNtpFile |
| TTree * | fNtpTree |
| Int_t | fNtpRun |
| Int_t | fNtpSnarl |
| Float_t | fNtpVtxX |
| Float_t | fNtpVtxY |
| Float_t | fNtpVtxZ |
| Int_t | fNtpVtxP |
| Int_t | fNtpNPln |
| Float_t | fNtpPRng |
| Float_t | fNtpPCrv |
| Float_t | fNtpVDrX |
| Float_t | fNtpVDrY |
| Float_t | fNtpVDrZ |
| Int_t | fNtpFitP |
| Int_t | fNtpEndC |
| Int_t | fNtpPass |
| Float_t | fNtpPMuX |
| Float_t | fNtpPMuY |
| Float_t | fNtpPMuZ |
|
|
Definition at line 47 of file RemoveMuon.cxx. 00047 : 00048 fAlgName(""), 00049 fAlgConfig(""), 00050 fNameListOut(""), 00051 fAlgOutputName(""), 00052 fAlgOutputConfig(""), 00053 fMakeNtp(0), 00054 fNtpFileName("muon_removal.root"), fNtpTreeName("ms"), 00055 fTrackListName("CandFitTrackCamList"), 00056 fNtpFile(NULL), fNtpTree(NULL), 00057 fNtpRun(0), fNtpSnarl(0), 00058 fNtpVtxX(0), fNtpVtxY(0), fNtpVtxZ(0), fNtpVtxP(0), fNtpNPln(0), 00059 fNtpPRng(0), fNtpPCrv(0), fNtpVDrX(0), fNtpVDrY(0), fNtpVDrZ(0), 00060 fNtpFitP(0), fNtpEndC(0), 00061 fNtpPass(0), fNtpPMuX(0), fNtpPMuY(0), fNtpPMuZ(0) 00062 { 00063 }
|
|
|
Definition at line 66 of file RemoveMuon.cxx. 00067 {
00068 }
|
|
|
Makes the ntp for Chris's NuE generator. It also makes the selection cuts on the events If this get modified then I will need to get chris to regenerate the events Reimplemented from JobCModule. Definition at line 129 of file RemoveMuon.cxx. References abs(), CandRecord::FindCandHandle(), fNtpEndC, fNtpFitP, fNtpNPln, fNtpPass, fNtpPCrv, fNtpPMuX, fNtpPMuY, fNtpPMuZ, fNtpPRng, fNtpRun, fNtpSnarl, fNtpTree, fNtpVDrX, fNtpVDrY, fNtpVDrZ, fNtpVtxP, fNtpVtxX, fNtpVtxY, fNtpVtxZ, CandHandle::GetDaughterIterator(), CandRecoHandle::GetEndPlane(), MomNavigator::GetFragment(), RecMinos::GetHeader(), CandEventHandle::GetLastTrack(), CandFitTrackHandle::GetMomentumCurve(), CandFitTrackHandle::GetMomentumRange(), CandFitTrackHandle::GetPass(), GetRemovableTrack(), CandHeader::GetRun(), CandHeader::GetSnarl(), CandRecoHandle::GetVtxDirCosU(), CandRecoHandle::GetVtxDirCosV(), CandRecoHandle::GetVtxDirCosZ(), CandRecoHandle::GetVtxPlane(), CandRecoHandle::GetVtxU(), CandRecoHandle::GetVtxV(), CandRecoHandle::GetVtxZ(), MSG, SelectEvent(), JobCResult::SetFailed(), and TrackEndContained(). 00130 {
00135 JobCResult result(JobCResult::kPassed);
00136
00137 CandRecord* record = dynamic_cast<CandRecord*>(mom->GetFragment("CandRecord"));
00138 if(!record){
00139 MSG("RmMu",Msg::kError) << " Unable to find CandRecord in mom !!! " << endl;
00140 result.SetFailed();
00141 return result;
00142 }
00143 const CandHeader* header = dynamic_cast<const CandHeader*>(record->GetHeader());
00144
00145 CandEventListHandle * eventlist = dynamic_cast<CandEventListHandle*>
00146 (record->FindCandHandle("CandEventListHandle"));
00147 if(!eventlist){
00148 MSG("RmMun",Msg::kDebug) << " Rejecting event as it has no events " << endl;
00149 result.SetFailed();
00150 return result;
00151 }
00152
00153 //bool has_good_track = 0;
00154
00155 TIter event_iter(eventlist->GetDaughterIterator());
00156 while( const CandEventHandle* event = dynamic_cast<const CandEventHandle*>(event_iter()) ){
00157 cout << " Event has " << event->GetLastTrack()+1 << " tracks " <<endl;
00158 if(SelectEvent(event)){
00159 if(fMakeNtp){
00160 const CandTrackHandle* track_tmp = GetRemovableTrack(event);
00161 const CandFitTrackHandle* track = dynamic_cast<const CandFitTrackHandle*>(track_tmp);
00162 if(track==NULL){
00163 MSG("RmMu",Msg::kError) << " GetRemovableTrack failed to return a good track " << endl;
00164 continue;
00165 }
00166 fNtpRun = header->GetRun();
00167 fNtpSnarl = header->GetSnarl();
00168 fNtpVtxX = .707106781*(track->GetVtxU() - track->GetVtxV());
00169 fNtpVtxY = .707106781*(track->GetVtxU() + track->GetVtxV());
00170 fNtpVtxZ = track->GetVtxZ();
00171 fNtpVtxP = track->GetVtxPlane();
00172 fNtpNPln = abs(track->GetEndPlane() - track->GetVtxPlane()) +1;
00173 fNtpPRng = track->GetMomentumRange();
00174 fNtpPCrv = track->GetMomentumCurve();
00175 fNtpVDrX = 0.707106781*(track->GetVtxDirCosU() - track->GetVtxDirCosV()) ;
00176 fNtpVDrY= 0.707106781*(track->GetVtxDirCosU() + track->GetVtxDirCosV()) ;
00177 fNtpVDrZ = track->GetVtxDirCosZ();
00178 fNtpFitP = track->GetPass();
00179 fNtpEndC = TrackEndContained(track);
00180 fNtpPass = 0;
00181 Float_t momentum = fNtpPRng;
00182 fNtpPass = 1;
00183 if(!fNtpEndC){
00184 fNtpPass = fNtpFitP;
00185 momentum = fNtpPCrv;
00186 }
00187 fNtpPMuX = fNtpVDrX*fabs(momentum);
00188 fNtpPMuY = fNtpVDrY*fabs(momentum);
00189 fNtpPMuZ = fNtpVDrZ*fabs(momentum);
00190 fNtpTree->Fill();
00191 }
00192 }else{
00193 result.SetFailed();
00194 }
00195 } //iterate over events.
00196 return result;
00197
00198 }
|
|
|
Implement for notification of begin of file. See GetCurrentFile(). Reimplemented from JobCModule. Definition at line 117 of file RemoveMuon.cxx. 00118 {
00119 }
|
|
|
Implement for notification of begin of job Reimplemented from JobCModule. Definition at line 72 of file RemoveMuon.cxx. References fNtpEndC, fNtpFile, fNtpFileName, fNtpFitP, fNtpNPln, fNtpPass, fNtpPCrv, fNtpPMuX, fNtpPMuY, fNtpPMuZ, fNtpPRng, fNtpRun, fNtpSnarl, fNtpTree, fNtpTreeName, fNtpVDrX, fNtpVDrY, fNtpVDrZ, fNtpVtxP, fNtpVtxX, fNtpVtxY, and fNtpVtxZ. 00073 {
00074 if(fMakeNtp){
00075 TDirectory* current_directory = gDirectory;
00076 fNtpFile = TFile::Open(fNtpFileName.c_str(), "recreate");
00077 fNtpFile->cd();
00078 fNtpTree = new TTree(fNtpTreeName.c_str(), "");
00079 fNtpTree->SetDirectory(fNtpFile);
00080 fNtpTree->Branch("run", &fNtpRun, "run/I");
00081 fNtpTree->Branch("snarl", &fNtpSnarl, "snarl/I");
00082 fNtpTree->Branch("vtxx", &fNtpVtxX, "vtxx/F");
00083 fNtpTree->Branch("vtxy", &fNtpVtxY, "vtxy/F");
00084 fNtpTree->Branch("vtxz", &fNtpVtxZ, "vtxz/F");
00085 fNtpTree->Branch("vtxp", &fNtpVtxP, "vtxp/I");
00086 fNtpTree->Branch("npln", &fNtpNPln, "npln/I");
00087 fNtpTree->Branch("prng", &fNtpPRng, "prng/F");
00088 fNtpTree->Branch("pcrv", &fNtpPCrv, "pcrv/F");
00089 fNtpTree->Branch("pvdx", &fNtpVDrX, "pvdx/F");
00090 fNtpTree->Branch("pvdy", &fNtpVDrY, "pvdy/F");
00091 fNtpTree->Branch("pvdz", &fNtpVDrZ, "pvdz/F");
00092 fNtpTree->Branch("fitp", &fNtpFitP, "fitp/I");
00093 fNtpTree->Branch("endc", &fNtpEndC, "endc/I");
00094 fNtpTree->Branch("pass", &fNtpPass, "pass/I");
00095 fNtpTree->Branch("pmux", &fNtpPMuX, "pmux/F");
00096 fNtpTree->Branch("pmuy", &fNtpPMuY, "pmuy/F");
00097 fNtpTree->Branch("pmuz", &fNtpPMuZ, "pmuz/F");
00098
00099 current_directory->cd();
00100 }
00101 }
|
|
|
Configure the module given the Registry r Reimplemented from JobCModule. Definition at line 314 of file RemoveMuon.cxx. References fAlgConfig, fAlgName, fAlgOutputConfig, fAlgOutputName, fMakeNtp, fNameListOut, fNtpFileName, fNtpTreeName, fTrackListName, Registry::Get(), and Registry::GetCharString(). 00315 {
00319 int tmpi = 0;
00320
00321 fAlgName = r.GetCharString("AlgName");
00322 fAlgConfig = r.GetCharString("AlgConfig");
00323 fNameListOut = r.GetCharString("StripListOut");
00324 fAlgOutputName = r.GetCharString("AlgOutputName");
00325 fAlgOutputConfig = r.GetCharString("AlgOutputConfig");
00326 if(r.Get("MakeNtp", tmpi)) fMakeNtp = tmpi;
00327 fNtpFileName = r.GetCharString("NtpFileName");
00328 fNtpTreeName = r.GetCharString("NtpTreeName");
00329 if(r.Get("TrackListName", tmpi)) fTrackListName = tmpi;
00330
00331 }
|
|
|
Supply the default configuration for the module Reimplemented from JobCModule. Definition at line 284 of file RemoveMuon.cxx. References JobCModule::GetName(), Registry::LockValues(), Registry::Set(), and Registry::UnLockValues(). 00285 {
00289 static Registry r; // Default configuration for module
00290
00291 // Set name of config
00292 std::string name = this->GetName();
00293 name += ".config.default";
00294 r.SetName(name.c_str());
00295
00296 // Set values in configuration
00297 r.UnLockValues();
00298 r.Set("AlgName","AlgMuonRemoval");
00299 r.Set("AlgConfig","default");
00300 r.Set("StripListOut", "stripdigitlist");
00301 r.Set("AlgOutputName","AlgRmMuList");
00302 r.Set("AlgOutputConfig","default");
00303 r.Set("MakeNtp", 0);
00304 r.Set("NtpFileName", "muon_summary.root");
00305 r.Set("NtpTreeName", "muonparams");
00306
00307 r.LockValues();
00308
00309 return r;
00310 }
|
|
|
Implement for notification of end of file. See GetLastFile(). Reimplemented from JobCModule. Definition at line 123 of file RemoveMuon.cxx. 00124 {
00125 }
|
|
|
Implement for notification of end of job Reimplemented from JobCModule. Definition at line 105 of file RemoveMuon.cxx. References fNtpFile, and fNtpTree. 00106 {
00107 if(fMakeNtp){
00108 TDirectory* current_directory = gDirectory;
00109 fNtpFile->cd();
00110 fNtpTree->Write();
00111 current_directory->cd();
00112 }
00113 }
|
|
|
Implement this for read-write access to the MomNavigator Reimplemented from JobCModule. Definition at line 202 of file RemoveMuon.cxx. References fAlgConfig, fAlgName, fAlgOutputConfig, fAlgOutputName, CandRecord::FindCandHandle(), fNameListOut, fTrackListName, Registry::Get(), AlgHandle::GetAlgConfig(), AlgFactory::GetAlgHandle(), MomNavigator::GetFragment(), AlgFactory::GetInstance(), Registry::LockKeys(), Registry::LockValues(), CandRmMuList::MakeCandidate(), CandDigitList::MakeCandidate(), MSG, CandRecord::SecureCandHandle(), Registry::Set(), CandContext::SetCandRecord(), CandContext::SetDataIn(), JobCResult::SetFailed(), JobCResult::SetFatal(), CandHandle::SetName(), CandHandle::SetTitle(), Registry::UnLockKeys(), and Registry::UnLockValues(). 00203 {
00204
00205 //
00206 //This function trys to remove the muon from the event and writes out a new cand digit list
00207 // NB: it does no event selection, i.e. it doesnt decide which events are suitable for
00208 // event removal. To run the event selection, run the Ana function befor ethe reco funtion.
00209 //
00210
00211 JobCResult result(JobCResult::kPassed);
00212 MSG("RmMu", Msg::kDebug) << " Starting RemoveMuon::Reco() " <<endl;
00213 MSG("RmMu", Msg::kDebug) << " Alg : " << fAlgName<< endl;
00214 MSG("RmMu", Msg::kDebug) << " AlgConfig : " << fAlgConfig<< endl;
00215 MSG("RmMu", Msg::kDebug) << " NameListOut: " << fNameListOut<< endl;
00216 MSG("RmMu", Msg::kDebug) << " TrackListName: " << fTrackListName<< endl;
00217
00218 //
00219 // Find PrimaryCandidateRecord fragment in MOM.
00220 //
00221 CandRecord *record = dynamic_cast<CandRecord *>(mom->GetFragment("CandRecord",
00222 "PrimaryCandidateRecord"));
00223 if (record == 0) {
00224 MSG("RmMu", Msg::kError) << "No PrimaryCandidateRecord in MOM."<< endl;
00225 result.SetFatal().SetFailed();
00226 return result;
00227 }
00228
00229 //
00230 //Remove the muon
00231 //
00232 CandContext cx(NULL, mom);
00233 TObjArray alg_input;
00234 alg_input.Add(record);
00235 cx.SetDataIn(&alg_input);
00236 cx.SetCandRecord(record);
00237 AlgHandle algorithm = AlgFactory::GetInstance().GetAlgHandle(fAlgName.c_str(),
00238 fAlgConfig.c_str());
00239 AlgConfig& algconfig = algorithm.GetAlgConfig();
00240 Int_t cMaxTrackLikePlanes = 0;
00241 if(!algconfig.Get("cMaxTrackLikePlanes",cMaxTrackLikePlanes))
00242 cMaxTrackLikePlanes = 6;
00243
00244 CandDigitListHandle digitlist = CandDigitList::MakeCandidate(algorithm, cx);
00245 digitlist.SetName(fNameListOut.c_str());
00246 digitlist.SetTitle(fNameListOut.c_str());
00247 record->SecureCandHandle(digitlist);
00248
00249 // make a candidate to hold the removed muon info
00250 // along with handles to the remaining digits
00251 CandEventListHandle * eventlist = dynamic_cast<CandEventListHandle*>
00252 (record->FindCandHandle("CandEventListHandle"));
00253 CandTrackListHandle * tracklist = dynamic_cast<CandTrackListHandle*>
00254 (record->FindCandHandle("CandTrackListHandle", fTrackListName.c_str()));
00255 CandDigitListHandle * digitlist2 = dynamic_cast<CandDigitListHandle*>
00256 (record->FindCandHandle("CandDigitListHandle"));
00257
00258 CandContext cx2(NULL, mom);
00259 TObjArray alg_input2;
00260 alg_input2.Add(digitlist2);
00261 alg_input2.Add(eventlist);
00262 alg_input2.Add(tracklist);
00263 cx2.SetDataIn(&alg_input2);
00264 cx2.SetCandRecord(record);
00265 AlgHandle algorithm2 = AlgFactory::GetInstance().
00266 GetAlgHandle(fAlgOutputName.c_str(),fAlgOutputConfig.c_str());
00267 AlgConfig& algconfig2 = algorithm2.GetAlgConfig();
00268 algconfig2.UnLockKeys();
00269 algconfig2.UnLockValues();
00270 algconfig2.Set("MaxTrackLikePlanes",cMaxTrackLikePlanes);
00271 algconfig2.LockKeys();
00272 algconfig2.LockValues();
00273 CandRmMuListHandle rmmulist = CandRmMuList::MakeCandidate(algorithm2, cx2);
00274 rmmulist.SetName("candrmmulist");
00275 rmmulist.SetTitle("candrmmulist");
00276 record->SecureCandHandle(rmmulist);
00277
00278 MSG("RmMu", Msg::kDebug) << " Leaving RemoveMuon::Reco() " <<endl;
00279 return JobCResult::kPassed; // kNoDecision, kFailed, etc.
00280 }
|
|
|
Definition at line 44 of file RemoveMuon.h. |
|
|
Definition at line 43 of file RemoveMuon.h. |
|
|
Definition at line 47 of file RemoveMuon.h. |
|
|
Definition at line 46 of file RemoveMuon.h. |
|
|
Definition at line 48 of file RemoveMuon.h. Referenced by Config(). |
|
|
Definition at line 45 of file RemoveMuon.h. |
|
|
Definition at line 73 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 57 of file RemoveMuon.h. Referenced by BeginJob(), and EndJob(). |
|
|
Definition at line 49 of file RemoveMuon.h. Referenced by BeginJob(), and Config(). |
|
|
Definition at line 72 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 66 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 75 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 68 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 76 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 77 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 78 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 67 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 60 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 61 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 58 of file RemoveMuon.h. Referenced by Ana(), BeginJob(), and EndJob(). |
|
|
Definition at line 50 of file RemoveMuon.h. Referenced by BeginJob(), and Config(). |
|
|
Definition at line 69 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 70 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 71 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 65 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 62 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 63 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 64 of file RemoveMuon.h. Referenced by Ana(), and BeginJob(). |
|
|
Definition at line 52 of file RemoveMuon.h. |
1.3.9.1