|
|
Definition at line 62 of file MuonRemovalInfoAna.cxx.
References abid, ReleaseType::AsString(), base, NtpSRPlane::beg, MuonRemovalInfo::best_complete, NtpMREvent::best_complete, NtpMREvent::best_complete_phw, MuonRemovalInfo::best_complete_phw, NtpMREvent::best_event, NtpMREvent::best_purity, MuonRemovalInfo::best_purity, NtpMREvent::best_purity_phw, MuonRemovalInfo::best_purity_phw, MadAbID::CalcPID(), MadDpID::CalcPID(), MadDpID::ChoosePDFs(), MadNsID::ChooseWeightFile(), NtpTHEvent::completeall, dpid, NtpMREvent::elec_complete, MuonRemovalInfo::elec_complete, NtpMREvent::elec_complete_phw, MuonRemovalInfo::elec_complete_phw, NtpSRPlane::end, NtpSRTrack::end, NtpMREvent::endc, MuonRemovalInfo::endc, NtpSRMomentum::eqp, NtpStRecord::evthdr, NtpMREvent::fitp, MuonRemovalInfo::fitp, fMuonRemovalInfo, EnergyCorrections::FullyCorrectMomentumFromRange(), EnergyCorrections::FullyCorrectShowerEnergy(), EnergyCorrections::FullyCorrectSignedMomentumFromCurvature(), VldContext::GetDetector(), SntpHelpers::GetEvent(), RecRecordImp< T >::GetHeader(), SntpHelpers::GetMREvent(), SntpHelpers::GetMRTruth(), MadNsID::GetPID(), SntpHelpers::GetPrimaryShower(), VldContext::GetSimFlag(), SntpHelpers::GetTrack(), RecHeader::GetVldContext(), gSystem(), ReleaseType::IsBirch(), ReleaseType::IsCarrot(), ReleaseType::IsCedar(), ANtpDefaultValue::IsDefault(), ReleaseType::IsDogwood(), NtpSRShowerPulseHeight::linCCgev, LoadROPID(), MAXMSG, NtpSRTrack::momentum, NtpMRRecord::mrhdr, NtpMREvent::mrmEshw, MuonRemovalInfo::mrmEshw, NtpMREvent::mrmpmux, MuonRemovalInfo::mrmpmux, NtpMREvent::mrmpmuy, MuonRemovalInfo::mrmpmuy, NtpMREvent::mrmpmuz, MuonRemovalInfo::mrmpmuz, NtpMREvent::mrmQ2, MuonRemovalInfo::mrmQ2, MSG, NtpMREvent::mxpl, MuonRemovalInfo::mxpl, NtpSRPlane::n, NtpMREvent::ndigit, MuonRemovalInfo::ndigit, NtpMRSummary::nmrevt, NtpMRTruth::nMuonDig, MuonRemovalInfo::nMuonDig, NtpMRTruth::nMuonDigRetained, MuonRemovalInfo::nMuonDigRetained, NtpMRTruth::nPERetained, MuonRemovalInfo::nPERetained, NtpMRTruth::nPERetainedBoth, MuonRemovalInfo::nPERetainedBoth, NtpMRTruth::nPERetainedMuon, MuonRemovalInfo::nPERetainedMuon, NtpMRTruth::nPERetainedShw, MuonRemovalInfo::nPERetainedShw, NtpMREvent::npln, MuonRemovalInfo::npln, NtpMRTruth::nRejected, MuonRemovalInfo::nRejected, NtpMRTruth::nRejectedBoth, MuonRemovalInfo::nRejectedBoth, NtpMRTruth::nRejectedMuon, MuonRemovalInfo::nRejectedMuon, NtpMRTruth::nRejectedShw, MuonRemovalInfo::nRejectedShw, NtpMRTruth::nRejShw, MuonRemovalInfo::nRejShw, NtpMRTruth::nRejShwFakeTrk, MuonRemovalInfo::nRejShwFakeTrk, NtpMRTruth::nRejShwMaxTrk, MuonRemovalInfo::nRejShwMaxTrk, NtpMRTruth::nRejShwMix, MuonRemovalInfo::nRejShwMix, NtpMRTruth::nRetained, MuonRemovalInfo::nRetained, NtpMRTruth::nRetainedBoth, MuonRemovalInfo::nRetainedBoth, NtpMRTruth::nRetainedMuon, MuonRemovalInfo::nRetainedMuon, NtpMRTruth::nRetainedShw, MuonRemovalInfo::nRetainedShw, MuonRemovalInfo::nrmstp, NtpSREvent::nshower, NtpMRTruth::nShwDig, MuonRemovalInfo::nShwDig, NtpMRTruth::nShwDigAtVtx, MuonRemovalInfo::nShwDigAtVtx, NtpMRTruth::nShwDigRetained, MuonRemovalInfo::nShwDigRetained, NtpMRTruth::nShwDigRetainedAtVtx, MuonRemovalInfo::nShwDigRetainedAtVtx, NtpMRTruth::nShwPE, MuonRemovalInfo::nShwPE, NtpMRTruth::nShwPEAtVtx, MuonRemovalInfo::nShwPEAtVtx, NtpMRTruth::nShwPERetained, MuonRemovalInfo::nShwPERetained, NtpMRTruth::nShwPERetainedAtVtx, MuonRemovalInfo::nShwPERetainedAtVtx, nsid, NtpSRShower::nstpcnt, NtpSREvent::nstrip, NtpMREvent::nstrip, MuonRemovalInfo::nstrip, NtpSREvent::ntrack, MuonRemovalInfo::orig_abCCPID, MuonRemovalInfo::orig_cc_pid, NtpMREvent::orig_event, MuonRemovalInfo::orig_event, MuonRemovalInfo::orig_evt_complete, MuonRemovalInfo::orig_evt_purity, MuonRemovalInfo::orig_nsCCPID, MuonRemovalInfo::orig_roCCPID, MuonRemovalInfo::origShwBegPlane, MuonRemovalInfo::origShwEndPlane, MuonRemovalInfo::origShwPlanes, MuonRemovalInfo::origShwStrips, MuonRemovalInfo::origShwVtxPlane, MuonRemovalInfo::origShwVtxX, MuonRemovalInfo::origShwVtxY, MuonRemovalInfo::origShwVtxZ, NtpMREvent::pass, MuonRemovalInfo::pass, MuonRemovalInfo::pcrv, NtpMREvent::pcrv, NtpSRShower::plane, NtpSRVertex::plane, NtpMREvent::pmux, MuonRemovalInfo::pmux, NtpMREvent::pmuy, MuonRemovalInfo::pmuy, NtpMREvent::pmuz, MuonRemovalInfo::pmuz, MuonRemovalInfo::prng, NtpMREvent::prng, NtpTHEvent::purity, NtpMREvent::pvdx, MuonRemovalInfo::pvdx, NtpMREvent::pvdy, MuonRemovalInfo::pvdy, NtpMREvent::pvdz, MuonRemovalInfo::pvdz, NtpSRMomentum::qp, MuonRemovalInfo::qp, readabidfile, MadAbID::ReadPDFs(), MuonRemovalInfo::Reset(), EnergyCorrections::SetCorrectionVersion(), MadDpID::SetPHCorrection(), MuonRemovalInfo::shwe, NtpSRShower::shwph, MuonRemovalInfo::SigmaQP, NtpSREvent::stp, NtpMREvent::stp, NtpStRecord::thevt, NtpSREvent::trk, NtpSRVertex::u, NtpSRVertex::v, NtpSRShower::vtx, NtpMREvent::vtxp, MuonRemovalInfo::vtxp, NtpMREvent::vtxx, MuonRemovalInfo::vtxx, NtpMREvent::vtxy, MuonRemovalInfo::vtxy, NtpMREvent::vtxz, MuonRemovalInfo::vtxz, NtpSRVertex::x, NtpSRVertex::y, and NtpSRVertex::z. 00064 {
00065 fMuonRemovalInfo.Reset();
00066 if(mrobj==0){
00067 return;
00068 }
00069
00070 if(ReleaseType::IsDogwood(release))
00071 SetCorrectionVersion(EnergyCorrections::kDogwood);
00072 if(ReleaseType::IsCedar(release))
00073 SetCorrectionVersion(EnergyCorrections::kCedar);
00074 if(ReleaseType::IsBirch(release))
00075 SetCorrectionVersion(EnergyCorrections::kBirch);
00076
00077
00078 Int_t best_rmmu = -1;
00079 Float_t best_com = 0;
00080 for(int i=0;i<mrobj->mrhdr.nmrevt;i++){
00081 NtpMREvent *ev = SntpHelpers::GetMREvent(i,mrobj);
00082 if(ev && ev->best_event==evtn && ev->best_complete>best_com) {
00083 best_com = ev->best_complete;
00084 best_rmmu = i;
00085 }
00086 }
00087 if(best_rmmu<0) return;
00088
00089 NtpMREvent *ev = SntpHelpers::GetMREvent(best_rmmu,mrobj);
00090 NtpMRTruth *tru = SntpHelpers::GetMRTruth(best_rmmu,mrobj);
00091
00092 if(!ev) return;
00093
00094 VldContext vc = mrobj->GetHeader().GetVldContext();
00095 double rangemom = ev->prng;
00096 double curvemom = ev->pcrv;
00097 EnergyCorrections::WhichCorrection_t corrver = EnergyCorrections::kDefault;
00098
00099
00100 if(rangemom>0) rangemom=FullyCorrectMomentumFromRange(rangemom,vc,release,corrver);
00101 curvemom = FullyCorrectSignedMomentumFromCurvature(curvemom,vc,release,corrver);
00102
00103 fMuonRemovalInfo.ndigit = ev->ndigit;
00104 fMuonRemovalInfo.nstrip = ev->nstrip;
00105 fMuonRemovalInfo.orig_event = ev->orig_event;
00106 fMuonRemovalInfo.best_purity = ev->best_purity;
00107 fMuonRemovalInfo.best_complete = ev->best_complete;
00108 fMuonRemovalInfo.elec_complete = ev->elec_complete;
00109 fMuonRemovalInfo.best_purity_phw = ev->best_purity_phw;
00110 fMuonRemovalInfo.best_complete_phw = ev->best_complete_phw;
00111 fMuonRemovalInfo.elec_complete_phw = ev->elec_complete_phw;
00112 fMuonRemovalInfo.vtxx = ev->vtxx;
00113 fMuonRemovalInfo.vtxy = ev->vtxy;
00114 fMuonRemovalInfo.vtxz = ev->vtxz;
00115 fMuonRemovalInfo.vtxp = ev->vtxp;
00116 fMuonRemovalInfo.npln = ev->npln;
00117 fMuonRemovalInfo.prng = rangemom;
00118 fMuonRemovalInfo.pcrv = curvemom;
00119 fMuonRemovalInfo.pvdx = ev->pvdx;
00120 fMuonRemovalInfo.pvdy = ev->pvdy;
00121 fMuonRemovalInfo.pvdz = ev->pvdz;
00122 fMuonRemovalInfo.fitp = ev->fitp;
00123 fMuonRemovalInfo.endc = ev->endc;
00124 fMuonRemovalInfo.pass = ev->pass;
00125 fMuonRemovalInfo.pmux = ev->pmux;
00126 fMuonRemovalInfo.pmuy = ev->pmuy;
00127 fMuonRemovalInfo.pmuz = ev->pmuz;
00128 fMuonRemovalInfo.mxpl = ev->mxpl;
00129 fMuonRemovalInfo.mrmpmux = ev->mrmpmux;
00130 fMuonRemovalInfo.mrmpmuy = ev->mrmpmuy;
00131 fMuonRemovalInfo.mrmpmuz = ev->mrmpmuz;
00132 fMuonRemovalInfo.mrmQ2 = ev->mrmQ2;
00133 fMuonRemovalInfo.mrmEshw = ev->mrmEshw;
00134
00135 if(tru) {
00136 fMuonRemovalInfo.nMuonDig = tru->nMuonDig;
00137 fMuonRemovalInfo.nMuonDigRetained = tru->nMuonDigRetained;
00138 fMuonRemovalInfo.nShwDig = tru->nShwDig;
00139 fMuonRemovalInfo.nShwDigRetained = tru->nShwDigRetained;
00140 fMuonRemovalInfo.nShwDigAtVtx = tru->nShwDigAtVtx;
00141 fMuonRemovalInfo.nShwDigRetainedAtVtx = tru->nShwDigRetainedAtVtx;
00142 fMuonRemovalInfo.nShwPE = tru->nShwPE;
00143 fMuonRemovalInfo.nShwPERetained = tru->nShwPERetained;
00144 fMuonRemovalInfo.nShwPEAtVtx = tru->nShwPEAtVtx;
00145 fMuonRemovalInfo.nShwPERetainedAtVtx = tru->nShwPERetainedAtVtx;
00146 fMuonRemovalInfo.nRetained = tru->nRetained;
00147 fMuonRemovalInfo.nRetainedMuon = tru->nRetainedMuon;
00148 fMuonRemovalInfo.nRetainedShw = tru->nRetainedShw;
00149 fMuonRemovalInfo.nRetainedBoth = tru->nRetainedBoth;
00150 fMuonRemovalInfo.nPERetained = tru->nPERetained;
00151 fMuonRemovalInfo.nPERetainedMuon = tru->nPERetainedMuon;
00152 fMuonRemovalInfo.nPERetainedShw = tru->nPERetainedShw;
00153 fMuonRemovalInfo.nPERetainedBoth = tru->nPERetainedBoth;
00154 fMuonRemovalInfo.nRejected = tru->nRejected;
00155 fMuonRemovalInfo.nRejectedMuon = tru->nRejectedMuon;
00156 fMuonRemovalInfo.nRejectedShw = tru->nRejectedShw;
00157 fMuonRemovalInfo.nRejectedBoth = tru->nRejectedBoth;
00158 fMuonRemovalInfo.nRejShw = tru->nRejShw;
00159 fMuonRemovalInfo.nRejShwMaxTrk = tru->nRejShwMaxTrk;
00160 fMuonRemovalInfo.nRejShwFakeTrk = tru->nRejShwFakeTrk;
00161 fMuonRemovalInfo.nRejShwMix = tru->nRejShwMix;
00162 }
00163
00164
00165 if(oldstobj==0){
00166 return;
00167 }
00168
00169 NtpSREventSummary *evtSum = &(oldstobj->evthdr);
00170 NtpSREvent *oldevt = SntpHelpers::GetEvent(ev->orig_event,oldstobj);
00171 if(oldevt == 0){
00172 MAXMSG("MuonRemovalAna",Msg::kError,10)<<"Original event ("<<ev->orig_event
00173 <<") isn't here ("<<evtn<<")anymore, that is odd\n"
00174 <<" Lost event had comp/pur "
00175 <<ev->best_purity_phw<<" "<<ev->best_complete_phw<<endl;
00176 return;
00177 }
00178
00179 NtpSRTrack *oldtrk = 0;
00180 NtpSRShower *oldshw = 0;
00181 if(oldevt->ntrack>0) oldtrk = SntpHelpers::GetTrack(oldevt->trk[0],oldstobj);
00182 if(oldevt->nshower>0) oldshw = SntpHelpers::GetPrimaryShower(ev->orig_event,oldstobj);
00183
00184 Detector::Detector_t detType =
00185 oldstobj->GetHeader().GetVldContext().GetDetector();
00186 if(detType==Detector::kFar) dpid.SetPHCorrection(1.018);
00187 Detector::Detector_t fDetectorType = detType;
00188
00189
00190 string reco_version = ReleaseType::AsString(release);
00191 string mc_version = "";
00192 if(mrobj->GetHeader().GetVldContext().GetSimFlag()==SimFlag::kMC)
00193 mc_version = ReleaseType::AsString(release);
00194 if(ReleaseType::IsCarrot(release)) reco_version = "birch";
00195 else if(ReleaseType::IsCedar(release)) reco_version = "cedar";
00196 else if(ReleaseType::IsDogwood(release)) reco_version = "cedar";
00197 else reco_version = "birch";
00198
00199 BeamType::BeamType_t current_beam = beam;
00200
00201 if(dpid.ChoosePDFs(detType,BeamType::kLE,
00202 reco_version,mc_version))
00203 fMuonRemovalInfo.orig_cc_pid =
00204 dpid.CalcPID(oldtrk,oldevt,evtSum,detType,0);
00205
00206 if(nsid.ChooseWeightFile(detType,current_beam)){
00207 if(!nsid.GetPID(oldevt,oldtrk,oldshw,oldstobj,detType,fMuonRemovalInfo.orig_nsCCPID))
00208 fMuonRemovalInfo.orig_nsCCPID=ANtpDefVal::kFloat;
00209 }
00210
00211 if(!readabidfile){
00212 string base=getenv("SRT_PRIVATE_CONTEXT");
00213 if(base!=""&&base!="."){
00214
00215 std::string path = base + "/Mad/data";
00216 void *dir_ptr = gSystem -> OpenDirectory(path.c_str());
00217 if(!dir_ptr){
00218 base=getenv("SRT_PUBLIC_CONTEXT");
00219 }
00220 }
00221 else{ base=getenv("SRT_PUBLIC_CONTEXT"); }
00222 if(base=="") {
00223 MSG("AnalysisInfoAna",Msg::kFatal)<<"No SRT_PUBLIC_CONTEXT set "
00224 <<"Do not know where to look "
00225 <<"for AB pdf files "<<std::endl;
00226 assert(false);
00227 }
00228 base+="/Mad/data";
00229 string fname=base;
00230 string rmc="";
00231 if(ReleaseType::IsCedar(release)&&mc_version=="daikon"){
00232 rmc="cedar_daikon";
00233 }
00234 else{
00235 MSG("AnalysisInfoAna",Msg::kWarning)<<"Dont know reco/mc versions "
00236 <<"defaulting to cedar_daikon"<<endl;
00237 rmc="cedar_daikon";
00238 }
00239 string sdet="";
00240 if(fDetectorType==Detector::kNear){
00241 sdet="near";
00242 }
00243 else if(fDetectorType==Detector::kFar){
00244 sdet="far";
00245 }
00246 else{
00247 MSG("AnalysisInfoAna",Msg::kWarning)<<"Dont know detector type "
00248 <<"defaulting to far"<<endl;
00249 sdet="far";
00250 }
00251 string sbeam="";
00252 switch (current_beam){
00253 case BeamType::kL010z000i:
00254 sbeam="le0";
00255 break;
00256 case BeamType::kL010z170i:
00257 sbeam="le170";
00258 break;
00259 case BeamType::kL010z185i:
00260 sbeam="le";
00261 break;
00262 case BeamType::kL010z200i:
00263 sbeam="le200";
00264 break;
00265 case BeamType::kL100z200i:
00266 sbeam="pme";
00267 break;
00268 case BeamType::kL150z200i:
00269 sbeam="pme";
00270 break;
00271 case BeamType::kL250z200i:
00272 sbeam="phe";
00273 break;
00274 case BeamType::kLE:
00275 sbeam="le";
00276 break;
00277 default:
00278 MSG("AnalysisInfoAna",Msg::kWarning)<<"Don't know beam type "
00279 <<" defaulting to LE"<<endl;
00280 sbeam="le";
00281 break;
00282 }
00283
00284 fname+="/ab_pdf_"+sdet+"_"+sbeam+"_"+rmc+".root";
00285
00286 abid.ReadPDFs(fname.c_str());
00287 readabidfile=true;
00288 }
00289
00290 fMuonRemovalInfo.orig_abCCPID=abid.CalcPID(oldevt,oldstobj);
00291 fMuonRemovalInfo.orig_roCCPID=LoadROPID(ev->orig_event);
00292
00293
00294
00296
00297
00298
00299
00300
00301 if(oldtrk) {
00302
00303 fMuonRemovalInfo.qp = oldtrk->momentum.qp;
00304 fMuonRemovalInfo.SigmaQP = oldtrk->momentum.eqp;
00305
00306 if(detType==Detector::kFar) {
00307 if(oldtrk->end.plane<=475 &&
00308 TMath::Power(oldtrk->end.x,2) +
00309 TMath::Power(oldtrk->end.y,2) <= 12.25){
00310 fMuonRemovalInfo.endc = true;
00311 fMuonRemovalInfo.pmux = fMuonRemovalInfo.pvdx*fMuonRemovalInfo.prng;
00312 fMuonRemovalInfo.pmuy = fMuonRemovalInfo.pvdy*fMuonRemovalInfo.prng;
00313 fMuonRemovalInfo.pmuz = fMuonRemovalInfo.pvdz*fMuonRemovalInfo.prng;
00314 }
00315 else {
00316 fMuonRemovalInfo.endc = false;
00317 if(fMuonRemovalInfo.fitp==1){
00318 fMuonRemovalInfo.pmux = fMuonRemovalInfo.pvdx*fMuonRemovalInfo.pcrv;
00319 fMuonRemovalInfo.pmuy = fMuonRemovalInfo.pvdy*fMuonRemovalInfo.pcrv;
00320 fMuonRemovalInfo.pmuz = fMuonRemovalInfo.pvdz*fMuonRemovalInfo.pcrv;
00321 }
00322 else {
00323 fMuonRemovalInfo.pmux = fMuonRemovalInfo.pvdx*fMuonRemovalInfo.prng;
00324 fMuonRemovalInfo.pmuy = fMuonRemovalInfo.pvdy*fMuonRemovalInfo.prng;
00325 fMuonRemovalInfo.pmuz = fMuonRemovalInfo.pvdz*fMuonRemovalInfo.prng;
00326 }
00327 }
00328 }
00329 else if(detType==Detector::kNear) {
00330
00331 Float_t trk_x = oldtrk->end.x;
00332 Float_t trk_y = oldtrk->end.y;
00333 Float_t trk_u = oldtrk->end.u;
00334 Float_t trk_v = oldtrk->end.v;
00335 Float_t trk_z = oldtrk->end.z;
00336 Float_t trk_r2 = trk_x*trk_x + trk_y*trk_y;
00337 Bool_t endc = false;
00338 if(trk_z<7.0) {
00339 if( trk_u>0.3 && trk_u<1.8 && trk_v>-1.8 && trk_v<-0.3 &&
00340 trk_x<2.4 && trk_r2>0.8*0.8 ) endc = true;
00341 else endc = false;
00342 }
00343 else{
00344 static const Float_t coil_cut=0.8*0.8;
00345 static const Float_t x0=0.8;
00346 static const Float_t y0=0.0;
00347 static const Float_t a=1.7;
00348 static const Float_t b=1.4;
00349 const Float_t xsc = (trk_x-x0)/a;
00350 const Float_t ysc = (trk_y-y0)/b;
00351 if( (sqrt(xsc*xsc + ysc*ysc)<1.0) &&
00352 (trk_r2>coil_cut) && (trk_z<15.6) ) endc = true;
00353 else endc = false;
00354 }
00355
00356 if(endc){
00357 fMuonRemovalInfo.endc = true;
00358 fMuonRemovalInfo.pmux = fMuonRemovalInfo.pvdx*fMuonRemovalInfo.prng;
00359 fMuonRemovalInfo.pmuy = fMuonRemovalInfo.pvdy*fMuonRemovalInfo.prng;
00360 fMuonRemovalInfo.pmuz = fMuonRemovalInfo.pvdz*fMuonRemovalInfo.prng;
00361 }
00362 else {
00363 fMuonRemovalInfo.endc = false;
00364 if(fMuonRemovalInfo.fitp==1){
00365 fMuonRemovalInfo.pmux = fMuonRemovalInfo.pvdx*fMuonRemovalInfo.pcrv;
00366 fMuonRemovalInfo.pmuy = fMuonRemovalInfo.pvdy*fMuonRemovalInfo.pcrv;
00367 fMuonRemovalInfo.pmuz = fMuonRemovalInfo.pvdz*fMuonRemovalInfo.pcrv;
00368 }
00369 else {
00370 fMuonRemovalInfo.pmux = fMuonRemovalInfo.pvdx*fMuonRemovalInfo.prng;
00371 fMuonRemovalInfo.pmuy = fMuonRemovalInfo.pvdy*fMuonRemovalInfo.prng;
00372 fMuonRemovalInfo.pmuz = fMuonRemovalInfo.pvdz*fMuonRemovalInfo.prng;
00373 }
00374 }
00375 }
00376 }
00378
00379 if(oldshw){
00380 if(!ANtpDefVal::IsDefault(oldshw->shwph.linCCgev)){
00381 fMuonRemovalInfo.shwe = FullyCorrectShowerEnergy(oldshw->shwph.linCCgev,
00382 CandShowerHandle::kCC,vc,release,EnergyCorrections::kDefault);
00383 fMuonRemovalInfo.origShwPlanes = oldshw->plane.n;
00384 fMuonRemovalInfo.origShwBegPlane = oldshw->plane.beg;
00385 fMuonRemovalInfo.origShwEndPlane = oldshw->plane.end;
00386 fMuonRemovalInfo.origShwStrips = oldshw->nstpcnt;
00387 fMuonRemovalInfo.origShwVtxPlane = oldshw->vtx.plane;
00388 fMuonRemovalInfo.origShwVtxX = oldshw->vtx.x;
00389 fMuonRemovalInfo.origShwVtxY = oldshw->vtx.y;
00390 fMuonRemovalInfo.origShwVtxZ = oldshw->vtx.z;
00391 }
00392 else {
00393 fMuonRemovalInfo.shwe = 0;
00394 fMuonRemovalInfo.origShwPlanes = 0;
00395 fMuonRemovalInfo.origShwBegPlane = 0;
00396 fMuonRemovalInfo.origShwEndPlane = 0;
00397 fMuonRemovalInfo.origShwStrips = 0;
00398 fMuonRemovalInfo.origShwVtxPlane = 0;
00399 fMuonRemovalInfo.origShwVtxX = 0;
00400 fMuonRemovalInfo.origShwVtxY = 0;
00401 fMuonRemovalInfo.origShwVtxZ = 0;
00402 }
00403 }
00404 else {
00405 fMuonRemovalInfo.shwe = 0;
00406 fMuonRemovalInfo.origShwPlanes = 0;
00407 fMuonRemovalInfo.origShwBegPlane = 0;
00408 fMuonRemovalInfo.origShwEndPlane = 0;
00409 fMuonRemovalInfo.origShwStrips = 0;
00410 fMuonRemovalInfo.origShwVtxPlane = 0;
00411 fMuonRemovalInfo.origShwVtxX = 0;
00412 fMuonRemovalInfo.origShwVtxY = 0;
00413 fMuonRemovalInfo.origShwVtxZ = 0;
00414
00415 }
00416 fMuonRemovalInfo.nrmstp = oldevt->nstrip;
00417 for(int i=0;i<ev->nstrip;i++){
00418 for(int j=0;j<oldevt->nstrip;j++){
00419 if(ev->stp[i]==oldevt->stp[j]) {
00420 fMuonRemovalInfo.nrmstp -= 1;
00421 break;
00422 }
00423 }
00424 }
00425
00426 if(oldstobj->GetHeader().GetVldContext().GetSimFlag()==4){
00427 NtpTHEvent *oldthev =
00428 dynamic_cast<NtpTHEvent *>((*oldstobj->thevt)[ev->orig_event]);
00429 if(oldthev) {
00430 fMuonRemovalInfo.orig_evt_purity = oldthev->purity;
00431 fMuonRemovalInfo.orig_evt_complete = oldthev->completeall;
00432 }
00433 }
00434
00435 }
|