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

NueMiniAnaPID.cxx

Go to the documentation of this file.
00001 
00002 //$Id: NueMiniAnaPID.cxx,v 1.10 2009/09/21 14:32:26 scavan Exp $
00003 //
00004 //NueMiniPID
00005 //
00006 //J Boehm 12/2007
00008                                                                                                                                                       
00009 #include "NueAna/ParticlePID/NueMiniPID.h"
00010 #include "NueAna/ParticlePID/NueMiniAnaPID.h"
00011 
00012 #include "MessageService/MsgService.h"
00013 #include "TMath.h"
00014 #include "NueAna/NueRecord.h"
00015 #include "NueAna/NueStandard.h"
00016 #include "NueAna/ParticlePID/ParticleAna/PRecord.h"
00017 #include "NueAna/NueHeader.h"
00018 
00019 
00020 CVSID("$Id: NueMiniAnaPID.cxx,v 1.10 2009/09/21 14:32:26 scavan Exp $");
00021                                                                                 
00022 
00023 //-------------------------------------------------------------------
00024 void NueMiniAnaPID::FillMini(NueRecord *nr, NueMiniPID *nm, int domrcc)
00025 {
00026    if(!nr){
00027      MSG("NueMiniAnaPID", Msg::kError) << "No NueRecord Passed"<<endl;
00028      return;
00029    }
00030 
00031    if(nr->GetHeader().GetRelease() != nm->fRelease){
00032      MSG("NueMiniAnaPID", Msg::kError) << "ReleaseType MisMatch: " 
00033             << nr->GetHeader().GetRelease()<<" != "<<nm->fRelease<<endl;
00034    }
00035    if(nr->GetHeader().GetBeamType() != nm->fBeam){
00036      MSG("NueMiniAnaPID", Msg::kError) << "BeamType MisMatch: "
00037             << nr->GetHeader().GetBeamType()<<" != "<<nm->fBeam<<endl;
00038    }
00039    if(nr->GetHeader().GetVldContext().GetDetector() != nm->fDet){
00040      MSG("NueMiniAnaPID", Msg::kError) << "Detector MisMatch: "
00041             << nr->GetHeader().GetVldContext().GetDetector() 
00042             <<" != "<<nm->fDet<<endl;
00043    }
00044 
00045    nm->evtRecoNueEnergy = nr->srevent.phNueGeV;
00046    nm->evtRecoMEUEnergy = nr->srevent.phMip;
00047 
00048    int tP = 0;    int tLP = 0;     float trkECC = 0;
00049    if(nr->srtrack.phCCGeV > -10){
00050      trkECC = nr->srtrack.phCCGeV;
00051      tP = TMath::Abs(nr->srtrack.endPlane - nr->srtrack.begPlane);
00052      tLP = nr->srtrack.trklikePlanes;
00053    }
00054    nm->trkRecoCCEnergy = trkECC;
00055    nm->trkPlanes = tP;
00056    nm->trkEndPlane = nr->srtrack.endPlane;
00057    nm->trkBegPlane = nr->srtrack.begPlane;
00058    nm->trkLikePlanes = tLP;
00059    nm->nshower = nr->srevent.showers;
00060    nm->contPlanes = nr->shwfit.contPlaneCount050;
00061    
00062 
00063    if(nr->srshower.phCCGeV > -10)
00064      nm->shwRecoCCEnergy = nr->srshower.phCCGeV;
00065    else nm->shwRecoCCEnergy = 0;
00066 
00067    nm->ann14 = nr->ann.pid;
00068    nm->ann30 = nr->ann.pid_30inp;
00069    nm->ann6 = nr->ann.pid_6inp;
00070    nm->ann2pe = nr->ann.pid_11inp;
00071    nm->ann2pe_daikon04 = nr->ann.pid_11inp_daikon04;
00072 
00073    nm->ssPID = nr->subshowervars.pid;
00074    nm->cutPID = nr->treepid.fCutPID;
00075    nm->mcnnPID = nr->mcnnv.mcnn_var1;
00076    nm->mcnnMatch = nr->mcnnv.bestmatches;
00077 
00078    //truth values
00079    nm->shiEpi0 = nr->shi.epi0;
00080    nm->shiEmEnergy = nr->shi.emenergy;
00081    nm->nuEnergy = nr->mctrue.nuEnergy;
00082    nm->nuFlavor = nr->mctrue.nuFlavor;
00083    nm->nonOscNuFlavor = nr->mctrue.nonOscNuFlavor;
00084    nm->nueClass = nr->mctrue.fNueClass;
00085 
00086    nm->nueOscProb = nr->mctrue.fOscProb;
00087    nm->interactionType = nr->mctrue.interactionType;
00088    nm->nuDCosX = nr->mctrue.nuDCosX;
00089    nm->nuDCosY = nr->mctrue.nuDCosY;
00090    nm->nuDCosZ = nr->mctrue.nuDCosZ;
00091    nm->hadronicY = nr->mctrue.hadronicY;
00092    nm->hadronicFinalState = nr->mctrue.hadronicFinalState;
00093    nm->w2 = nr->mctrue.w2;
00094    nm->q2 = nr->mctrue.q2;
00095    nm->bjorkenX = nr->mctrue.bjorkenX;
00096    nm->targetPX = nr->mctrue.targetPX;
00097    nm->targetPY = nr->mctrue.targetPY;
00098    nm->targetPZ = nr->mctrue.targetPZ;
00099    nm->targetEnergy = nr->mctrue.targetEnergy;
00100    nm->atomicNumber = nr->mctrue.atomicNumber;
00101    nm->atomicWeight = nr->mctrue.atomicWeight;
00102    nm->initialState = nr->mctrue.initialState;
00103    nm->resonanceCode = nr->mctrue.resonanceCode;
00104 
00105    nm->skzpWeight = nr->fluxweights.totbeamweight;
00106    nm->MCWeight = NueStandard::GetMCWeights(nr); 
00107 
00108    nm->ntrack =  nr->srevent.tracks;
00109    nm->trkPass = nr->srtrack.passedFit;
00110    nm->endPlaneU = nr->srtrack.endPlaneU;
00111    nm->endPlaneV = nr->srtrack.endPlaneV;
00112    nm->deltaUVVtx = nr->srtrack.deltaUVVtx;
00113    nm->abCCPID = nr->anainfo.abCCPID;
00114    nm->roCCPID = nr->anainfo.roCCPID;
00115 
00116    nm->mri_roCCPID = nr->mri.orig_roCCPID;
00117    nm->mri_abCCPID = nr->mri.orig_abCCPID;
00118    nm->mri_trkPass = nr->mri.fitp;
00119    nm->gapPlanes = nr->srshower.gapPlanes;
00120    nm->neugenStdXsec = 1;
00121    nm->cosmicCut = (int) nr->eventq.passCosmicCut;
00122    nm->largestEvent = nr->srevent.largestEvent;
00123    
00124    PRecord *pr = & nr->precord;
00125    if(domrcc)
00126         pr=& nr->precordMRCC;
00127         
00128    
00129    nm->longest_s=pr->particles.longest_s_particle_s;
00130    nm->event_length=pr->event.max_z-pr->event.min_z;
00131    nm->ntot=pr->particles.ntot;
00132    nm->infid=pr->event.inFiducial == 1;
00133    nm->contained=pr->event.contained == 1;
00134    nm->event_energy = pr->event.visenergy;
00135    nm->particle_energy = pr->particles.totvise;
00136    
00137    
00138    nm->pidA=pr->event.pidA;
00139    nm->pidB=pr->event.pidB;
00140    nm->pidC=pr->event.pidC;
00141    nm->pidD=pr->event.pidD;
00142    nm->pidE=pr->event.pidE;
00143    nm->pidF=pr->event.pidF;
00144    
00145    if(domrcc)
00146                 nm->mrcc_s = pr->mrccinfo.hasMRCC ? pr->mrccinfo.particle_s : 0;
00147   
00148 
00149 
00150 
00151 
00152    bool pass=1;
00153 
00154    if(pr->particles.longest_s_particle_s<0 || pr->particles.longest_s_particle_s>6)pass=0;
00155    if(pr->particles.longest_z<0 || pr->particles.longest_z>6)pass=0;
00156    if(pr->particles.ntot<0 || pr->particles.ntot>50)pass=0;
00157    if(pr->particles.rms_r<0 || pr->particles.rms_r>100)pass=0;
00158    if(pr->particles.prim_par_e0<0 || pr->particles.prim_par_e0>40e3)pass=0;
00159    if(pr->particles.prim_par_chisq<0 || pr->particles.prim_par_chisq>1000)pass=0;
00160    if(pr->particles.largest_particle_peakdiff<-200 || pr->particles.largest_particle_peakdiff>200)pass=0;
00161    if(nm->event_length<0 || nm->event_length>6)pass=0;
00162 
00163    nm->pass_var_check=pass;
00164     
00165    pass=1;
00166    double mstvar_combine = nr->mstvars.e4w+nr->mstvars.o4w;
00167    if(nr->shwfit.par_b<0 || nr->shwfit.par_b>6)pass=0;
00168    if(mstvar_combine<-1000 || mstvar_combine>1000)pass=0;
00169    if(nr->shwfit.LongE<0 || nr->shwfit.LongE>1200)pass=0;
00170    nm->pass_nvar_check=pass;
00171 
00172 
00173    double largest_frac=pr->particles.totvise ?
00174         pr->particles.largest_particle_e/pr->particles.totvise : 1;
00175    double prim_ae0=pr->particles.prim_par_e0 ?
00176         pr->particles.prim_par_a/pr->particles.prim_par_e0 : 0;
00177    double largest_cmp_chisqndf = pr->particles.largest_particle_cmp_ndf ?
00178         pr->particles.largest_particle_cmp_chisq /
00179             pr->particles.largest_particle_cmp_ndf : 0;
00180 
00181 
00182    int z=0;
00183    nm->pars[z++]=pr->particles.longest_s_particle_s;
00184    nm->pars[z++]=pr->particles.mol_rad_r;
00185    nm->pars[z++]=pr->particles.emfrac;
00186    nm->pars[z++]=pr->particles.ntot;
00187    nm->pars[z++]=pr->particles.weighted_phi;
00188    nm->pars[z++]=largest_frac;
00189    nm->pars[z++]=pr->particles.prim_par_b;
00190    nm->pars[z++]=pr->particles.prim_par_e0;
00191    nm->pars[z++]=pr->particles.prim_par_chisq;
00192    nm->pars[z++]=pr->particles.largest_particle_peakdiff;
00193    nm->pars[z++]=largest_cmp_chisqndf;
00194    nm->pars[z++]=pr->particles.prim_par_a;
00195    nm->pars[z++]=pr->event.nclusters;
00196    nm->pars[z++]=prim_ae0;
00197 
00198 
00199 
00200    nm->vtxU=pr->event.vtx_u;
00201    nm->vtxV=pr->event.vtx_v;
00202    nm->vtxZ=pr->event.vtx_z;
00203 
00204    nm->nueVtxX=nr->srevent.vtxX;
00205    nm->nueVtxY=nr->srevent.vtxY;
00206    nm->nueVtxZ=nr->srevent.vtxZ;
00207 
00208  
00209    
00210    
00211    
00212    nm->run=nr->GetHeader().GetRun();
00213    nm->subrun=nr->GetHeader().GetSubRun();   
00214    nm->event=nr->GetHeader().GetEventNo();
00215    nm->snarl=nr->GetHeader().GetSnarl();
00216    
00217    nm->passes_NueStandard_PassesDataQuality=NueStandard::PassesDataQuality(nr); 
00218    nm->passes_NueStandard_IsInFid=NueStandard::IsInFid(nr);     
00219    nm->passes_NueStandard_PassesPOTStandards=NueStandard::PassesPOTStandards(nr);
00220    nm->passes_NueStandard_PassesCosmicCut=NueStandard::PassesCosmicCut(nr);
00221    nm->passes_NueStandard_PassesNonHEPreSelection=NueStandard::PassesNonHEPreSelection(nr);
00222    nm->passes_NueStandard_PassesPreSelection=NueStandard::PassesPreSelection(nr);    
00223    
00224    nm->passes_NueStandard_PassesMinPlaneCut=NueStandard::PassesMinPlaneCut(nr);
00225    nm->passes_NueStandard_PassesShowerCut=NueStandard::PassesShowerCut(nr);
00226    nm->passes_NueStandard_PassesTrackPlaneCut=NueStandard::PassesTrackPlaneCut(nr);
00227    nm->passes_NueStandard_PassesTrackLikePlaneCut=NueStandard::PassesTrackLikePlaneCut(nr);
00228    nm->passes_NueStandard_PassesLowEnergyCut=NueStandard::PassesLowEnergyCut(nr);
00229    nm->passes_NueStandard_PassesHighEnergyCut=NueStandard::PassesHighEnergyCut(nr);
00230 
00231    nm->passes_NueStandard_PassesMRCCFiducial=NueStandard::PassesMRCCFiducial(nr);
00232    nm->passes_NueStandard_PassesMRCCPreSelection=NueStandard::PassesMRCCPreSelection(nr);      
00233 
00234 
00235 
00236    nm->timestamp = nr->GetHeader().GetVldContext().GetTimeStamp().GetSec();
00237 
00238 
00239    nm->mri_qp=nr->mri.qp;
00240    nm->mri_orig_cc_pid=nr->mri.orig_cc_pid;
00241    nm->mri_SigmaQP=nr->mri.SigmaQP;
00242          
00243    nm->mri_best_complete=nr->mri.best_complete;
00244    nm->mri_fitp=nr->mri.fitp;
00245 
00246  
00247 }
00248 
00249 void NueMiniAnaPID::FillRecord(NueRecord *nr, NueMiniPID *nm, int domrcc)
00250 {  
00251    if(!nr || !nm){
00252      MSG("NueMiniPID", Msg::kError) << "No NueRecord Passed"<<endl;
00253      return;
00254    }
00255 
00256    nr->srevent.phNueGeV = nm->evtRecoNueEnergy;
00257    nr->srevent.phMip = nm->evtRecoMEUEnergy;
00258    nr->srtrack.phCCGeV = nm->trkRecoCCEnergy;
00259    nr->srtrack.trklikePlanes = nm->trkLikePlanes;
00260    nr->srtrack.begPlane = nm->trkBegPlane;
00261    nr->srtrack.endPlane = nm->trkEndPlane;
00262    nr->srshower.phCCGeV = nm->shwRecoCCEnergy;
00263 
00264    nr->srevent.showers = nm->nshower; 
00265    nr->shwfit.contPlaneCount050 = nm->contPlanes;
00266        
00267    nr->ann.pid= nm->ann14;                              
00268    nr->ann.pid_11inp = nm->ann2pe;                                           
00269    nr->ann.pid_11inp_daikon04 = nm->ann2pe_daikon04;                                           
00270    nr->ann.pid_30inp = nm->ann30;
00271    nr->ann.pid_6inp = nm->ann6;
00272    nr->subshowervars.pid = nm->ssPID;
00273    nr->treepid.fCutPID = nm->cutPID;
00274    nr->mcnnv.mcnn_var1 = nm->mcnnPID;
00275    nr->mcnnv.bestmatches = nm->mcnnMatch;
00276                                                                                 
00277    //truth values
00278    nr->shi.epi0 = nm->shiEpi0;
00279    nr->shi.emenergy = nm->shiEmEnergy;
00280    nr->mctrue.nuEnergy = nm->nuEnergy;
00281    nr->mctrue.nuFlavor = nm->nuFlavor;
00282    nr->mctrue.nonOscNuFlavor = nm->nonOscNuFlavor;
00283    nr->mctrue.fNueClass = nm->nueClass;
00284                                                                                 
00285    nr->mctrue.fOscProb = nm->nueOscProb;
00286    nr->mctrue.interactionType = nm->interactionType;
00287    nr->mctrue.nuDCosX = nm->nuDCosX;
00288    nr->mctrue.nuDCosY = nm->nuDCosY;
00289    nr->mctrue.nuDCosZ = nm->nuDCosZ;
00290    nr->mctrue.hadronicY = nm->hadronicY;
00291    nr->mctrue.hadronicFinalState = nm->hadronicFinalState;
00292    nr->mctrue.w2 = nm->w2;
00293    nr->mctrue.q2 = nm->q2;
00294    nr->mctrue.bjorkenX = nm->bjorkenX;
00295    nr->mctrue.targetPX = nm->targetPX;
00296    nr->mctrue.targetPY = nm->targetPY;
00297    nr->mctrue.targetPZ = nm->targetPZ;
00298    nr->mctrue.targetEnergy = nm->targetEnergy;
00299    nr->mctrue.atomicNumber = nm->atomicNumber;
00300    nr->mctrue.atomicWeight = nm->atomicWeight;
00301    nr->mctrue.initialState = nm->initialState;
00302    nr->mctrue.resonanceCode = nm->resonanceCode;
00303                                                                                 
00304    nr->fluxweights.totbeamweight = nm->skzpWeight;
00305 
00306    nr->srevent.tracks = nm->ntrack;
00307    nr->srtrack.passedFit = nm->trkPass;
00308    nr->srtrack.endPlaneU = nm->endPlaneU;
00309    nr->srtrack.endPlaneV = nm->endPlaneV;
00310    nr->srtrack.deltaUVVtx = nm->deltaUVVtx;
00311    nr->anainfo.abCCPID = nm->abCCPID;
00312    nr->anainfo.roCCPID = nm->roCCPID;
00313 
00314    nr->mri.orig_roCCPID = nm->mri_roCCPID;
00315    nr->mri.orig_abCCPID = nm->mri_abCCPID;
00316    nr->mri.fitp = nm->mri_trkPass;
00317    nr->srshower.gapPlanes = nm->gapPlanes;
00318    nr->eventq.passCosmicCut = nm->cosmicCut;
00319    nr->srevent.largestEvent = nm->largestEvent;
00320    
00321    PRecord *pr = & nr->precord;
00322    if(domrcc)
00323         pr=& nr->precordMRCC;
00324         
00325    
00326    pr->particles.longest_s_particle_s=nm->longest_s;
00327 
00328    //we don't enough have information here!
00329    pr->event.max_z=nm->event_length;
00330    pr->event.min_z=0;
00331    
00332    pr->particles.ntot=nm->ntot;
00333    pr->event.inFiducial=nm->infid;
00334    pr->event.contained=nm->contained;
00335    pr->event.visenergy=nm->event_energy;
00336    pr->particles.totvise=nm->particle_energy;
00337    
00338    pr->event.pidA=nm->pidA;   
00339    pr->event.pidB=nm->pidB;
00340    pr->event.pidC=nm->pidC; 
00341    pr->event.pidD=nm->pidD;
00342    pr->event.pidE=nm->pidE;   
00343    pr->event.pidF=nm->pidF;
00344    
00345    if(domrcc)
00346                 pr->mrccinfo.particle_s = nm->mrcc_s;
00347 
00348 
00349 
00350    pr->event.vtx_u=nm->vtxU;
00351    pr->event.vtx_v=nm->vtxV;
00352    pr->event.vtx_z=nm->vtxZ;
00353 
00354    nr->srevent.vtxX=nm->nueVtxX;
00355    nr->srevent.vtxY=nm->nueVtxY;
00356    nr->srevent.vtxZ=nm->nueVtxZ;
00357 
00358    NueHeader * nh = const_cast<NueHeader *> (&(nr->GetHeader()));
00359    nh->SetRun(nm->run);
00360    nh->SetSubRun(nm->subrun);   
00361    nh->SetEventNo(nm->event);
00362    nh->SetSnarl(nm->snarl);   
00363    
00364    
00365 
00366    nr->mri.qp=nm->mri_qp;
00367    nr->mri.orig_cc_pid=nm->mri_orig_cc_pid;
00368    nr->mri.SigmaQP=nm->mri_SigmaQP;
00369          
00370    nr->mri.best_complete=nm->mri_best_complete;
00371    nr->mri.fitp=nm->mri_fitp;   
00372    
00373 }
00374 

Generated on Mon Feb 15 11:07:11 2010 for loon by  doxygen 1.3.9.1