00001 JobCPath& attach_mrcc_path_far(JobC &jc,
00002 JobCPath& attach_to,
00003 int spill_m,
00004 TString config,
00005 bool blinding,
00006 SimFlag::SimFlag_t simflag,
00007 TString output_filename = "ntupleMRNT.root")
00008 {
00009 assert(simflag == SimFlag::kData || simflag == SimFlag::kMC);
00010
00011
00012 const TString blindStr = blinding ? "Blind" : "";
00013
00014 JobCPath& removal = jc.Path.Create("muonremoval"+blindStr,
00015 "FiltTriggerPrescale::Ana ");
00016
00017 JobCPath& muonreco = jc.Path.Create("muonreco"+blindStr);
00018
00019 muonreco.PushBack("RemoveMuon", "Reco");
00020 muonreco.PushBack("StripCands", "Reco");
00021 muonreco.PushBack("ChopModule", "Reco");
00022 muonreco.PushBack("BiggestChopModule", "Reco");
00023 muonreco.PushBack("DeMuxDigitListModule", "Reco");
00024 muonreco.PushBack("StripSRListModule", "Reco");
00025 muonreco.PushBack("SliceSRListModule", "Reco");
00026 muonreco.PushBack("TrackCamListModule", "Reco");
00027 muonreco.PushBack("FitTrackCamListModule", "Reco");
00028 muonreco.PushBack("ClusterSRListModule", "Reco");
00029 muonreco.PushBack("SubShowerSRListModule", "Reco");
00030 muonreco.PushBack("ShowerSRListModule", "Reco");
00031 muonreco.PushBack("EventSRListModule", "Reco");
00032 muonreco.PushBack("RecordSetupModule", "Reco");
00033
00034 if(simflag == SimFlag::kData)
00035 muonreco.PushBack("NtpBDLite", "Reco");
00036
00037 muonreco.PushBack("NtpStModule", "Get");
00038 muonreco.PushBack("NtpSRModule", "Reco");
00039
00040 if(simflag == SimFlag::kMC){
00041 muonreco.PushBack("NtpMCModule", "Reco");
00042 JobCModule& ntpmc = muonreco.Mod("NtpMCModule");
00043 ntpmc.Set("UseStandard=1");
00044 ntpmc.Set("RecordName=MuonRemoved");
00045
00046 muonreco.PushBack("NtpTHModule", "Reco");
00047 JobCModule& ntpth = muonreco.Mod("NtpTHModule");
00048 ntpth.Set("UseStandard=1");
00049 ntpth.Set("RecordName=MuonRemoved");
00050 }
00051
00052 muonreco.PushBack("FitTrackSAListModule", "Reco");
00053 muonreco.PushBack("NtpFitSAModule", "Reco");
00054 muonreco.PushBack("NtpMRModule", "Reco");
00055 muonreco.PushBack("Output", "Put");
00056
00057 removal.Attach(&muonreco);
00058
00059 removal.SetAllFilters(1);
00060
00061 removal.Mod("FiltTriggerPrescale").Set(TString::Format("Spill_N=1 Spill_M=%d", spill_m));
00062
00063 muonreco.SetAllFilters(0);
00064
00065
00066 muonreco.Mod("RemoveMuon").Set("StripListOut=stripdigitlist");
00067 muonreco.Mod("StripCands").Set("keepdigitlist=stripdigitlist");
00068
00069
00070 JobCModule& stripsrlist = muonreco.Mod("StripSRListModule");
00071 stripsrlist.Set("ListIn=canddigitlist");
00072
00073 JobCModule& slicesrlist = muonreco.Mod("SliceSRListModule");
00074 slicesrlist.Set(("SliceListAlgConfig="+config).Data());
00075 slicesrlist.Set("ListIn=CandStripList");
00076
00077 JobCModule& trackcamlist = muonreco.Mod("TrackCamListModule");
00078 trackcamlist.Set("TrackListAlgConfig=default");
00079 trackcamlist.Set("NameListIn=CandSliceList");
00080 trackcamlist.Set("NameListOut=CandTrackSRList");
00081
00082 JobCModule& fittrackcam = muonreco.Mod("FitTrackCamListModule");
00083 fittrackcam.Set("NameListIn=CandTrackSRList");
00084 fittrackcam.Set("UseGeoSwimmer=1");
00085
00086 muonreco.Mod("ClusterSRListModule").Set(("ClusterListAlgConfig="+config).Data());
00087 muonreco.Mod("SubShowerSRListModule").Set("SubShowerSRListAlgConfig=default");
00088 JobCModule& showersrlist = muonreco.Mod("ShowerSRListModule");
00089 showersrlist.Set("ShowerListAlgorithm=AlgShowerSSList");
00090 showersrlist.Set("ShowerListAlgConfig=default");
00091 showersrlist.Set("ListOut=CandShowerSRList");
00092
00093 JobCModule& eventsrlist = muonreco.Mod("EventSRListModule");
00094 eventsrlist.Set("EventListAlgorithm=AlgEventSSList");
00095 eventsrlist.Set(("EventListAlgConfig="+config).Data());
00096
00097
00098
00099
00100
00101
00102
00103 muonreco.Mod("ChopModule").Set("ChopAlgorithm=AlgChopListFar");
00104 muonreco.Mod("BiggestChopModule").Set("MinEnergy=0.0");
00105 muonreco.Mod("BiggestChopModule").Set("OmitLiEvents=1");
00106 muonreco.Mod("BiggestChopModule").Set("LiVetoWindowLow=-1.0e-6");
00107 muonreco.Mod("BiggestChopModule").Set("LiVetoWindowHigh=31.0e-6");
00108
00109
00110 muonreco.Mod("DeMuxDigitListModule").Set("SwitchPersToTemp=1");
00111 muonreco.Mod("DeMuxDigitListModule").Set("NameListOut=altdemux");
00112 muonreco.Mod("DeMuxDigitListModule").Set("DeMuxDigitListAlgConfig=devel");
00113 muonreco.Mod("StripSRListModule").Set("ListIn=altdemux");
00114
00115
00116
00117
00118
00119
00120 JobCModule& output = muonreco.Mod("Output");
00121 output.Set("FileName="+output_filename);
00122
00123 muonreco.Mod("NtpStModule").Set("RecordName=MuonRemoved");
00124 muonreco.Mod("NtpSRModule").Set("UseStandard=1");
00125 muonreco.Mod("NtpSRModule").Set("RecordName=MuonRemoved");
00126
00127 output.Cmd("DefineStream NtpSt NtpStRecord MuonRemoved");
00128 output.Cmd("DefineStream NtpMR NtpMRRecord");
00129 output.Set("Streams=NtpSt,NtpMR");
00130
00131
00132 if(blinding){
00133 JobCPath& mrblindpath = jc.Path.Create("mrblindpath",
00134 "Blinder::Ana "
00135 );
00136
00137
00138 mrblindpath.Node("Blinder::Ana").FilterOn();
00139
00140 JobCPath& mrblindSR = jc.Path.Create("mrblindSR",
00141 "Output::Put ");
00142
00143 mrblindSR.SetAllFilters(false);
00144
00145 mrblindpath.Attach(&mrblindSR);
00146 muonreco.Attach(&mrblindpath);
00147
00148 JobCModule& op = mrblindSR.Mod("Output");
00149 op.Set("FileName=ntupleMRNT.root");
00150 op.Cmd("DefineStream NtpSt NtpStRecord MuonRemoved");
00151 op.Cmd("DefineStream NtpMR NtpMRRecord");
00152 op.Set("Streams=NtpSt,NtpMR");
00153 }
00154
00155
00156 attach_to.Attach(&removal);
00157
00158 return muonreco;
00159 }