Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

MuonRemovalInfoAna Class Reference

#include <MuonRemovalInfoAna.h>

Inheritance diagram for MuonRemovalInfoAna:

NueAnaBase List of all members.

Public Member Functions

 MuonRemovalInfoAna (MuonRemovalInfo &sv)
virtual ~MuonRemovalInfoAna ()
void Analyze (int evtn, RecRecordImp< RecCandHeader > *mrobj)
void Analyze (int evtn, RecRecordImp< RecCandHeader > *mrobj, RecRecordImp< RecCandHeader > *oldstobj)
void Analyze (int evtn, NtpMRRecord *mrobj, NtpStRecord *oldstobj)
float LoadROPID (int evtn)

Private Attributes

MuonRemovalInfofMuonRemovalInfo

Static Private Attributes

MadDpID dpid
MadNsID nsid
MadAbID abid
bool readabidfile = false

Constructor & Destructor Documentation

MuonRemovalInfoAna::MuonRemovalInfoAna MuonRemovalInfo sv  ) 
 

Definition at line 35 of file MuonRemovalInfoAna.cxx.

00035                                                           :
00036   fMuonRemovalInfo(mri)
00037 {}

MuonRemovalInfoAna::~MuonRemovalInfoAna  )  [virtual]
 

Definition at line 39 of file MuonRemovalInfoAna.cxx.

00040 {}


Member Function Documentation

void MuonRemovalInfoAna::Analyze int  evtn,
NtpMRRecord mrobj,
NtpStRecord oldstobj
 

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   //find the best matching rmmu entry for this event
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   //check if an NtpOldRecord was passed
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";  //<-- ! no dogwood file! 
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       // check if directory exists in SRT_PRIVATE_CONTEXT
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   // This block of code is to fix a bug in the original 
00297   // MuonRemoval/SelectEvent/TrackEndContained function
00298   // It will recalculate the muon momentum based on the 
00299   // track end containment. As of 17/11/06 these cuts are
00300   // the same as those in MuonRemoval
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       //pitt fiducial volume for ND
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; // rescale ellipse to unit circle
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 }

void MuonRemovalInfoAna::Analyze int  evtn,
RecRecordImp< RecCandHeader > *  mrobj,
RecRecordImp< RecCandHeader > *  oldstobj
 

Definition at line 51 of file MuonRemovalInfoAna.cxx.

References Analyze().

00053 {
00054   if(mrobj==0){
00055     return;
00056   }
00057   NtpMRRecord *mr = dynamic_cast<NtpMRRecord *>(mrobj);
00058   NtpStRecord *oldst = dynamic_cast<NtpStRecord *>(oldstobj);
00059   Analyze(event,mr,oldst);
00060 }

void MuonRemovalInfoAna::Analyze int  evtn,
RecRecordImp< RecCandHeader > *  mrobj
[virtual]
 

Implements NueAnaBase.

Definition at line 42 of file MuonRemovalInfoAna.cxx.

Referenced by NueRecordAna::Analyze(), and Analyze().

00043 {
00044   if(mrobj==0){
00045     return;
00046   }
00047   NtpMRRecord *mr = dynamic_cast<NtpMRRecord *>(mrobj);
00048   Analyze(event,mr,0);
00049 }

float MuonRemovalInfoAna::LoadROPID int  evtn  ) 
 

Definition at line 438 of file MuonRemovalInfoAna.cxx.

References Anp::Factory< T >::Instance(), MAXMSG, and Anp::Handle< T >::valid().

Referenced by Analyze().

00438                                            {
00439 
00440 //   vector<string> list =  Anp::Factory<StorekNNData>::Instance().List();
00441 //   cout<<list.size()<<endl;
00442  
00443    //Loading up Rustems variables
00444    Anp::Handle<StorekNNData> data = Anp::Factory<StorekNNData>::Instance().Get("kNNData");
00445    if(!data.valid())
00446    {
00447       MAXMSG("NueModule", Msg::kError, 1)
00448           << "NueModule::Reco - Handle<StorekNNData> is invalid, assuming no Rustem variable to run"
00449           << endl;
00450       return ANtpDefVal::kFloat;
00451    }
00452 
00453    float knn_pid;
00454 
00455    data -> SetPrefix("OldSNTP");
00456    data -> Get(evtn, "knn_pid", knn_pid);
00457    return knn_pid;
00458 }                                                                              


Member Data Documentation

MadAbID MuonRemovalInfoAna::abid [static, private]
 

Definition at line 27 of file MuonRemovalInfoAna.cxx.

Referenced by Analyze().

MadDpID MuonRemovalInfoAna::dpid [static, private]
 

Definition at line 25 of file MuonRemovalInfoAna.cxx.

Referenced by Analyze().

MuonRemovalInfo& MuonRemovalInfoAna::fMuonRemovalInfo [private]
 

Definition at line 31 of file MuonRemovalInfoAna.h.

Referenced by Analyze().

MadNsID MuonRemovalInfoAna::nsid [static, private]
 

Definition at line 26 of file MuonRemovalInfoAna.cxx.

Referenced by Analyze().

bool MuonRemovalInfoAna::readabidfile = false [static, private]
 

Definition at line 29 of file MuonRemovalInfoAna.cxx.

Referenced by Analyze().


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:09:38 2010 for loon by  doxygen 1.3.9.1