00001 #include "AtNuFindModule.h"
00002
00003 #include "Algorithm/AlgConfig.h"
00004 #include "Algorithm/AlgFactory.h"
00005 #include "Algorithm/AlgHandle.h"
00006
00007 #include "CandData/CandRecord.h"
00008 #include "Candidate/CandContext.h"
00009 #include "JobControl/JobCModuleRegistry.h"
00010 #include "JobControl/JobCommand.h"
00011 #include "MessageService/MsgService.h"
00012 #include "MinosObjectMap/MomNavigator.h"
00013 #include "UgliGeometry/UgliGeomHandle.h"
00014 #include "Validity/VldContext.h"
00015 #include "Plex/PlexPlaneId.h"
00016
00017 #include "RecoBase/CandSliceListHandle.h"
00018 #include "RecoBase/CandSliceHandle.h"
00019
00020 #include "CandAtNuRecoHandle.h"
00021 #include "CandShowerAtNuHandle.h"
00022 #include "CandShowerAtNuListHandle.h"
00023 #include "CandTrackAtNuHandle.h"
00024 #include "CandTrackAtNuListHandle.h"
00025
00026
00027
00028
00029
00030 ClassImp(AtNuFindModule)
00031
00032 CVSID("$Id: AtNuFindModule.cxx,v 1.12 2006/03/28 13:54:11 blake Exp $");
00033 JOBMODULE(AtNuFindModule, "AtNuFindModule","AtNu Track/Shower Finder Module");
00034
00035 AtNuFindModule::AtNuFindModule() :
00036 fListIn("CandSliceListHandle"),
00037 fMCTruthFlag(0)
00038 {
00039
00040 }
00041
00042 AtNuFindModule::~AtNuFindModule()
00043 {
00044
00045 }
00046
00047 void AtNuFindModule::BeginJob()
00048 {
00049
00050 MSG("AtNuFindModule", Msg::kInfo) << " *** AtNuFindModule::BeginJob() *** " << endl;
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 }
00062
00063 JobCResult AtNuFindModule::Reco(MomNavigator *mom)
00064 {
00065
00066
00067 MSG("AtNuFindModule", Msg::kInfo) << " *** AtNuFindModule::Reco() *** " << endl;
00068 JobCResult result(JobCResult::kPassed);
00069
00070
00071 CandRecord *candrec = dynamic_cast<CandRecord *> (mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00072 if(!candrec){
00073 MSG("AtNuFindModule", Msg::kWarning) << " Failed to Find CandRecord " << endl;
00074 return result.SetFailed();
00075 }
00076
00077
00078 CandSliceListHandle *cslh = dynamic_cast<CandSliceListHandle*>(candrec->FindCandHandle("CandSliceListHandle",fListIn.Data()));
00079 if(!cslh){
00080 MSG("AtNuFindModule", Msg::kWarning) << " Failed to Find " << fListIn.Data() << endl;
00081 return result.SetFailed();
00082 }
00083
00084
00085 MSG("AtNuFindModule", Msg::kDebug) << " Make CandAtNuRecoHandle " << endl;
00086 TString alg_atnu("AlgAtNuReco"); if(fMCTruthFlag) alg_atnu.Append("MCTruth");
00087 MSG("AtNuFindModule", Msg::kDebug) << " ... using algorithm " << alg_atnu.Data() << endl;
00088
00089 AlgFactory &af = AlgFactory::GetInstance();
00090 AlgHandle ah_atnu = af.GetAlgHandle(alg_atnu.Data(), "default");
00091
00092 CandContext cx_atnu(this, mom);
00093 cx_atnu.SetCandRecord(candrec);
00094 cx_atnu.SetDataIn(cslh);
00095 CandAtNuRecoHandle candatnu = CandAtNuReco::MakeCandidate(ah_atnu, cx_atnu);
00096 candatnu.SetName("CandAtNuRecoHandle");
00097 candatnu.SetTitle(TString("Created by AtNuFindModule from ").Append(cslh->GetName()));
00098
00099 candrec->SecureCandHandle(candatnu);
00100
00101 MSG("AtNuFindModule", Msg::kInfo) << " *** AtNuFindModule::Reco() FINISHED *** " << endl;
00102
00103 return result;
00104
00105 }
00106
00107 JobCResult AtNuFindModule::Ana(const MomNavigator * )
00108 {
00109
00110 JobCResult result(JobCResult::kPassed);
00111
00112
00113 return result;
00114
00115 }
00116
00117 const Registry& AtNuFindModule::DefaultConfig() const
00118 {
00119
00120 MSG("AtNuFindModule", Msg::kInfo) << " *** AtNuFindModule::DefaultConfig() *** " << endl;
00121
00122 static Registry r;
00123 r.SetName("AtNuFindModule.config.default");
00124 r.UnLockValues();
00125 r.Set("ListIn",fListIn.Data());
00126 r.Set("MCTruthFlag",fMCTruthFlag);
00127 r.Set("ListOutTrk","CandTrackAtNuListHandle");
00128 r.Set("ListOutShw","CandShowerAtNuListHandle");
00129 r.Set("VtxFlag",1);
00130 r.Set("PeCut",1.0);
00131 r.Set("FibreIndex",1.77);
00132 r.Set("AtNuAnaOnOff",1);
00133 r.LockValues();
00134
00135 AlgFactory &af = AlgFactory::GetInstance();
00136
00137 af.Register("AlgAtNuReco","default");
00138 AlgHandle ah_atnu = af.GetAlgHandle("AlgAtNuReco","default");
00139 AlgConfig &ac_atnu = ah_atnu.GetAlgConfig();
00140 ac_atnu.UnLockValues();
00141 ac_atnu.Set("ListOutTrk","CandTrackAtNuListHandle");
00142 ac_atnu.Set("ListOutShw","CandShowerAtNuListHandle");
00143 ac_atnu.Set("VtxFlag",1);
00144 ac_atnu.Set("PeCut",1.0);
00145 ac_atnu.LockValues();
00146
00147 af.Register("AlgAtNuRecoMCTruth","default");
00148 AlgHandle ah_atnumc = af.GetAlgHandle("AlgAtNuRecoMCTruth","default");
00149 AlgConfig &ac_atnumc = ah_atnumc.GetAlgConfig();
00150 ac_atnumc.UnLockValues();
00151 ac_atnumc.Set("ListOutTrk","CandMCTrackAtNuListHandle");
00152 ac_atnumc.Set("ListOutShw","CandMCShowerAtNuListHandle");
00153 ac_atnumc.LockValues();
00154
00155 af.Register("AlgTrackAtNu", "default");
00156 AlgHandle ah_trk = af.GetAlgHandle("AlgTrackAtNu","default");
00157 AlgConfig &ac_trk = ah_trk.GetAlgConfig();
00158 ac_trk.UnLockValues();
00159 ac_trk.Set("FibreIndex",1.77);
00160 ac_trk.Set("AtNuAnaOnOff",1);
00161 ac_trk.LockValues();
00162
00163 af.Register("AlgShowerAtNu", "default");
00164 AlgHandle ah_shw = af.GetAlgHandle("AlgShowerAtNu","default");
00165 AlgConfig &ac_shw = ah_shw.GetAlgConfig();
00166 ac_shw.UnLockValues();
00167 ac_shw.Set("FibreIndex",1.77);
00168 ac_shw.Set("AtNuAnaOnOff",1);
00169 ac_shw.LockValues();
00170
00171 return r;
00172 }
00173
00174 void AtNuFindModule::Config(const Registry &r)
00175 {
00176
00177 MSG("AtNuFindModule", Msg::kInfo) << " *** AtNuFindModule::Config() *** " << endl;
00178
00179 Int_t tmpint; Double_t tmpdub; const char* tmpchar = 0;
00180
00181 if(r.Get("ListIn",tmpchar)) fListIn = tmpchar;
00182 if(r.Get("MCTruthFlag",tmpint)) fMCTruthFlag = tmpint;
00183
00184 AlgFactory &af = AlgFactory::GetInstance();
00185
00186 AlgHandle ah_atnu = af.GetAlgHandle("AlgAtNuReco","default");
00187 AlgConfig &ac_atnu = ah_atnu.GetAlgConfig();
00188 ac_atnu.UnLockValues();
00189 if(r.Get("ListOutTrk",tmpchar)) ac_atnu.Set("ListOutTrk",tmpchar);
00190 if(r.Get("ListOutShw",tmpchar)) ac_atnu.Set("ListOutShw",tmpchar);
00191 if(r.Get("VtxFlag",tmpint)) ac_atnu.Set("VtxFlag",tmpint);
00192 if(r.Get("PeCut",tmpdub)) ac_atnu.Set("PeCut",tmpdub);
00193 ac_atnu.LockValues();
00194
00195 AlgHandle ah_atnumc = af.GetAlgHandle("AlgAtNuRecoMCTruth","default");
00196 AlgConfig &ac_atnumc = ah_atnumc.GetAlgConfig();
00197 ac_atnumc.UnLockValues();
00198 if(r.Get("ListOutTrk",tmpchar)) ac_atnumc.Set("ListOutTrk",tmpchar);
00199 if(r.Get("ListOutShw",tmpchar)) ac_atnumc.Set("ListOutShw",tmpchar);
00200 ac_atnumc.LockValues();
00201
00202 AlgHandle ah_trk = af.GetAlgHandle("AlgTrackAtNu","default");
00203 AlgConfig &ac_trk = ah_trk.GetAlgConfig();
00204 ac_trk.UnLockValues();
00205 if(r.Get("FibreIndex",tmpdub)) ac_trk.Set("FibreIndex",tmpdub);
00206 if(r.Get("AtNuAnaOnOff",tmpint)) ac_trk.Set("AtNuAnaOnOff",tmpint);
00207 ac_trk.LockValues();
00208
00209 AlgHandle ah_shw = af.GetAlgHandle("AlgShowerAtNu","default");
00210 AlgConfig &ac_shw = ah_shw.GetAlgConfig();
00211 ac_shw.UnLockValues();
00212 if(r.Get("FibreIndex",tmpdub)) ac_shw.Set("FibreIndex",tmpdub);
00213 if(r.Get("AtNuAnaOnOff",tmpint)) ac_shw.Set("AtNuAnaOnOff",tmpint);
00214 ac_shw.LockValues();
00215
00216 return;
00217 }
00218
00219 void AtNuFindModule::HandleCommand(JobCommand *command)
00220 {
00221 TString cmd = command->PopCmd();
00222 if(cmd=="Set"){
00223 TString opt = command->PopOpt();
00224
00225 }
00226 }
00227
00228 void AtNuFindModule::EndJob()
00229 {
00230
00231 }
00232