#include <MinosCompactEvent.h>
Public Member Functions | |
| MinosCompactEvent (unsigned short qtype=0) | |
| MinosCompactEvent (const NtpStRecord *record, const int eventno, unsigned short qtype) | |
| MinosCompactEvent (const MinosCompactEvent *event, int stripCompressionFactor) | |
| MinosCompactEvent (const MinosCompactEvent *event, int pattern[201]) | |
| MinosCompactEvent (const MinosCompactEvent *event) | |
| int | SizeOf () |
| void | SetPEThreshold (float qpe) |
| void | Print () |
| void | Merge (MinosCompactEvent *pcce2) |
| void | ScaleCharges (float factor) |
| Int_t | GetLastPlaneToUse (const NtpStRecord *record, int eventno, int max_strips_cut=3, int max_gap=3) |
| virtual | ~MinosCompactEvent () |
Public Attributes | |
| float | _peThreshold |
| int | Run |
| int | Snarl |
| float | chargeScale |
| float | meanU |
| float | meanV |
| int | meanPlane |
| int | Qtot |
| int | Qtotraw |
| int | nPlanes |
| float | eNu |
| float | y |
| short | idact |
| short | idres |
| short | idnu |
| int | nxtalk |
| int | nxtalk_tagged |
| int | nxtalk_mistagged |
| int | nphysics |
| int | nremoved |
| std::vector< compactStrip_h > | UStrips |
| std::vector< compactStrip_h > | VStrips |
| unsigned short | ChargeType |
|
|
Definition at line 65 of file MinosCompactEvent.cxx. References chargeScale, ChargeType, eNu, idact, idnu, idres, meanPlane, meanU, meanV, nphysics, nPlanes, nremoved, nxtalk, nxtalk_mistagged, nxtalk_tagged, Qtot, Run, Snarl, and y. 00066 {
00067
00068 Run = -1;
00069 Snarl = -1;
00070 chargeScale = -1;
00071 meanU = -1;
00072 meanV = -1;
00073 meanPlane = -1;
00074 Qtot = -1;
00075 nPlanes = -1;
00076 eNu = -1;
00077 y = -1;
00078 idact = -1;
00079 idres = -1;
00080 idnu = -1;
00081 nxtalk = -1;
00082 nxtalk_tagged = -1;
00083 nxtalk_mistagged = -1;
00084 nphysics = -1;
00085 nremoved = -1;
00086 //UStrips.reserve(1);
00087 //VStrips.reserve(1);
00088
00089 ChargeType = qtype;
00090
00091 }
|
|
||||||||||||||||
|
Definition at line 227 of file MinosCompactEvent.cxx. References _peThreshold, abs(), AttenCorr::CalcCorr(), chargeScale, ChargeType, XTalkFilter::Config(), XTalkFilter::DefaultConfig(), XTalkFilter::DoTrueFilter(), eNu, NtpStRecord::evt, NtpStRecord::evthdr, FloatErr, Calibrator::GetAttenCalibrator(), Calibrator::GetAttenCorrected(), VldContext::GetDetector(), RecRecordImp< T >::GetHeader(), GetLastPlaneToUse(), RecDataHeader::GetRun(), RecPhysicsHeader::GetSnarl(), NtpSRStrip::GetStripEndId(), ValueErr< T >::GetValue(), RecHeader::GetVldContext(), NtpMCTruth::iaction, compactStrip_h::icharge, idact, idnu, idres, NtpSRStrip::index, Calibrator::Instance(), NtpMCTruth::inu, NtpMCTruth::iresonance, AttenCorr::lE, AttenCorr::lW, NtpStRecord::mc, meanPlane, meanU, meanV, ndstripno(), NtpTHEvent::neumc, nphysics, nPlanes, nremoved, NtpSREvent::nshower, NtpSRTrack::nstrip, NtpSRShower::nstrip, NtpSREventSummary::nstrip, NtpSREvent::nstrip, NtpSREvent::ntrack, nxtalk, nxtalk_mistagged, nxtalk_tagged, NtpMCTruth::p4neu, NtpSRPulseHeight::pe, NtpSRStrip::ph0, NtpSRStrip::ph1, compactStrip_h::plane, NtpSRStrip::plane, NtpSRStrip::planeview, AttenCorr::qpecor, Qtot, Qtotraw, CalScheme::Reset(), Run, PlexStripEndId::SetEnd(), SetPEThreshold(), NtpSREvent::shw, NtpStRecord::shw, NtpSRPulseHeight::sigcor, Snarl, NtpSRTrack::stp, NtpSRShower::stp, NtpStRecord::stp, NtpSREvent::stp, NtpSRTrack::stpph0gev, NtpSRShower::stpph0gev, NtpSRTrack::stpph1gev, NtpSRShower::stpph1gev, compactStrip_h::strip, NtpSRStrip::strip, NtpStRecord::thevt, NtpSRStrip::tpos, NtpSREvent::trk, NtpStRecord::trk, UStrips, VStrips, NtpMCTruth::y, and y. 00228 {
00229
00230 Qtot = 0;
00231 Qtotraw = 0;
00232
00233 ChargeType = qtype;
00234
00235 // need to be able to modify the record (xtalk removal)
00236 NtpStRecord *record = (NtpStRecord*)record_const->Clone();
00237
00238 // xtalk removal --
00239 if (qtype==2 || qtype==4) {
00240 // we want to apply the xtalk filter, so build a module and use it
00241 // (it would be better if there were a convenient way to keep one
00242 // persistent, but making one anew each time is not too bad.)
00243 XTalkFilter *xtalkfilter = new XTalkFilter();
00244 xtalkfilter->Config(xtalkfilter->DefaultConfig());
00245 xtalkfilter->DoTrueFilter(record,eventno);
00246 delete xtalkfilter;
00247 }
00248
00249 //build a geometry handle
00250 UgliGeomHandle ugh(record->GetHeader().GetVldContext());
00251
00252 const int detector = record->GetHeader().GetVldContext().GetDetector();
00253
00254 const NtpSREvent* event = dynamic_cast<const NtpSREvent*>(record->evt->At(eventno));
00255 assert(event);
00256 const NtpMCTruth* mcevent = NULL;
00257 if(record && record->thevt->GetEntries()!=0){
00258 const NtpTHEvent* thevent = dynamic_cast<const NtpTHEvent*>(record->thevt->At(eventno));
00259 mcevent = dynamic_cast<const NtpMCTruth*>(record->mc->At(thevent->neumc));
00260 }
00261
00262 bool planes[500];
00263 for(int i=0;i<500;++i)planes[i]=false;
00264
00265 chargeScale = 10.;
00266
00267 Double_t ChargeToPe = 1.0; //For qtype 1-4 and 6, this is the approximate charge in units of qtype found in 1 pe.
00268 //It is identical to the sigcorscale in the HitProbTable used with this qtype.
00269 if (qtype == 1 || qtype == 2) ChargeToPe = 70.0; //Roughly 70 sigmaps per pe.
00270 if (qtype == 3 || qtype == 4 || qtype == 6) ChargeToPe = 8.0; //Rougly 8 MeV per pe.
00271
00272 if(Detector::kFar == detector){//FD
00273 SetPEThreshold(3.0);
00274 } else SetPEThreshold(3.0);
00275
00276
00277 // set the global quantities
00278 Run = record->GetHeader().GetRun();
00279 Snarl = record->GetHeader().GetSnarl();
00280
00281 // cout << "*************************************************" << endl;
00282 //cout << " RUN/SNARL : " << Run << " : " << Snarl << endl;
00283
00284 // set any MC quantities
00285 if(mcevent){
00286 eNu = mcevent->p4neu[3];
00287 y = mcevent->y;
00288 idact = mcevent->iaction;
00289 idres = mcevent->iresonance;
00290 idnu = mcevent->inu;
00291 } else {
00292 eNu = -1;
00293 y = -1;
00294 idact = -1;
00295 idres = -1;
00296 idnu = -1;
00297 }
00298
00299 const int nstrips = event->nstrip;
00300
00301 //MCNN version of xtalk removal no longer supported. These data members
00302 //are being left in for backward compatibility.
00303 nxtalk=0;
00304 nxtalk_tagged=0;
00305 nxtalk_mistagged=0;
00306 nphysics=0;
00307 nremoved=0;
00308
00309
00310 // --- Z trimming ---
00311 // Decide if there is a plane past which we should ignore everything (i.e., trailing hits)
00312 // Only do this for the newer charge types (but not qtype = 5, which is pe-scaled sigcors)...
00313 // Now, qtype=6 is the same as qtype=3 but without the z-trimming
00314 Int_t lastPlaneToUse = 99999;
00315 if (qtype>0 && qtype != 5 && qtype != 6) lastPlaneToUse = GetLastPlaneToUse(record, eventno);
00316
00317 // loop over the strips to determine number of u and v strips to be stored
00318 int nU = 0;
00319 int nV = 0;
00320 int nUKept = 0;
00321 int nVKept = 0;
00322 for(int istp = 0; istp< nstrips; istp++){
00323 if(event->stp[istp]<0) continue;
00324 const NtpSRStrip* strip = dynamic_cast<const NtpSRStrip*>(record->stp->At(event->stp[istp]));
00325
00326 float qpe = strip->ph0.pe+strip->ph1.pe;
00327
00328 if(qpe>_peThreshold && qpe < 1000 && strip->plane<=lastPlaneToUse){
00329 planes[strip->plane]=true;
00330 if(strip->planeview==2)nU++;
00331 if(strip->planeview==3)nV++;
00332 }
00333 }
00334
00335 nPlanes = 0;
00336 int minPlane = -999;
00337 int maxPlane = 999;
00338 int ncount = 0;
00339 for(int i=0;i<500;++i){
00340 if(planes[i]){
00341 nPlanes++;
00342 if(minPlane<0)minPlane=i;
00343 ncount++;
00344 if(ncount==PLANE_WINDOW)maxPlane =i;
00345 }
00346 }
00347
00348 //Array to hold qpe totals
00349 Float_t qpe_totU[201]={0.};
00350 Float_t qpe_totV[201]={0.};
00351
00352 //Array to hold strip totals
00353 Int_t stp_totU[201]={0};
00354 Int_t stp_totV[201]={0};
00355
00356 Int_t strip_count_u = 0;
00357 Int_t strip_count_v = 0;
00358
00359
00360 // now find charge weighted mean strip and plane in first
00361 // AVERAGE_OVER_PLANES planes
00362
00363 double sumU = 0.;
00364 double sumV = 0.;
00365 double sumZ = 0.;
00366 double sumQ = 0.;
00367 double UsumQ = 0.;
00368 double VsumQ = 0.;
00369 int striptrue = 0;
00370
00371 for(int istp = 0; istp< nstrips; istp++){
00372 if(event->stp[istp]<0) continue;
00373 const NtpSRStrip* strip = dynamic_cast<const NtpSRStrip*>(record->stp->At(event->stp[istp]));
00374
00375 float qpe = strip->ph0.pe+strip->ph1.pe;
00376
00377 if(qpe>_peThreshold && qpe < 1000){
00378 if(strip->plane>=minPlane&&strip->plane<=maxPlane){
00379 if(strip->planeview==2){
00380 striptrue = ndstripno(strip->plane, strip->strip,strip->planeview, detector);
00381 qpe_totU[striptrue] += qpe;
00382 stp_totU[striptrue]++;
00383 strip_count_u++;
00384 }
00385 if(strip->planeview==3){
00386 striptrue = ndstripno(strip->plane, strip->strip,strip->planeview, detector);
00387 qpe_totV[striptrue] += qpe;
00388 stp_totV[striptrue]++;
00389 strip_count_v++;
00390 }
00391 }
00392 }
00393 }
00394
00395
00396 Float_t u_qtot=0;
00397 Int_t u_stot=0;
00398 Float_t u_qmax=-1;
00399 Int_t u_smax=-1;
00400 Float_t u_qmax_nocut=-1;
00401 Int_t u_smax_nocut=-1;
00402
00403 Float_t v_qtot=0;
00404 Int_t v_stot=0;
00405 Float_t v_qmax=-1;
00406 Int_t v_smax=-1;
00407 Float_t v_qmax_nocut=-1;
00408 Int_t v_smax_nocut=-1;
00409
00410 for (Int_t ii=0;ii<201;ii++){
00411 u_qtot=0.;
00412 v_qtot=0.;
00413 u_stot=0;
00414 v_stot=0;
00415
00416 for (Int_t jj = (1 - STRIP_WINDOW); jj<(STRIP_WINDOW); jj++){
00417
00418 if (((ii+jj)>=0)&&((ii+jj)<201)){
00419 u_qtot+=qpe_totU[ii+jj];
00420 v_qtot+=qpe_totV[ii+jj];
00421 u_stot+=stp_totU[ii+jj];
00422 v_stot+=stp_totV[ii+jj];
00423 }
00424 }
00425
00426
00428
00429 //Without cut on numbers of strips
00430 if (v_qtot>v_qmax_nocut) {
00431 v_smax_nocut=ii;
00432 v_qmax_nocut=v_qtot;
00433 }
00434
00435
00436 //With careful attention to outlying noise strips
00437 if (v_qtot>v_qmax){
00438
00439 if (strip_count_v>5&&v_stot>=3) {
00440 v_qmax=v_qtot;
00441 v_smax=ii;
00442 }
00443 else if (strip_count_v<=5&&strip_count_v>2&&v_stot>=2) {
00444 v_qmax=v_qtot;
00445 v_smax=ii;
00446 }
00447 else if (strip_count_v<=2&&strip_count_v>0){
00448 v_qmax=v_qtot;
00449 v_smax=ii;
00450 }
00451
00452 }
00453
00455
00456 //Without cut on numbers of strips
00457 if (u_qtot>u_qmax_nocut) {
00458 u_smax_nocut=ii;
00459 u_qmax_nocut=u_qtot;
00460 }
00461
00462
00463 //With careful attention to outlying noise strips
00464 if (u_qtot>u_qmax){
00465
00466 if (strip_count_u>5&&u_stot>=3) {
00467 u_qmax=u_qtot;
00468 u_smax=ii;
00469 }
00470 else if (strip_count_u<=5&&strip_count_u>2&&u_stot>=2) {
00471 u_qmax=u_qtot;
00472 u_smax=ii;
00473 }
00474 else if (strip_count_u<=2&&strip_count_u>0){
00475 u_qmax=u_qtot;
00476 u_smax=ii;
00477 }
00478
00479 }
00480
00481 }
00482
00483 //Revert to just the largest window if everything fails outlier test
00484 if (u_smax<0) u_smax=u_smax_nocut;
00485 if (v_smax<0) v_smax=v_smax_nocut;
00486
00487 int imeanUTemp = u_smax;
00488 int imeanVTemp = v_smax;
00489
00490
00491 // now do it all again throwing away outlying strips
00492 meanU=0.;
00493 meanV=0.;
00494 sumU = 0.;
00495 sumV = 0.;
00496 sumZ = 0.;
00497 sumQ = 0.;
00498 UsumQ = 0.;
00499 VsumQ = 0.;
00500 double meanUTPos = 0;
00501 double meanVTPos = 0;
00502
00503 for(int istp = 0; istp< nstrips; istp++){
00504 if(event->stp[istp]<0) continue;
00505 const NtpSRStrip* strip = dynamic_cast<const NtpSRStrip*>(record->stp->At(event->stp[istp]));
00506 // const NtpTHStrip* stptruth= dynamic_cast<const NtpTHStrip*>(record->thstp->At(event->stp[istp]));
00507 // assert(stptruth);
00508 // if(stptruth!=NULL && ispurextalk(stptruth->sigflg)) continue;
00509
00510 float qpe = strip->ph0.pe+strip->ph1.pe;
00511
00512 if(qpe>_peThreshold && qpe < 1000 && strip->plane<=lastPlaneToUse){
00513 if(strip->plane>=minPlane&&strip->plane<=maxPlane){
00514 if(strip->planeview==2 && abs(ndstripno(strip->plane, strip->strip,strip->planeview, detector)-imeanUTemp)<STRIP_WINDOW){
00515 nUKept++;
00516 sumQ += qpe;
00517 UsumQ += qpe*qpe;
00518 sumZ += strip->plane*qpe;
00519 sumU += ndstripno(strip->plane, strip->strip,strip->planeview, detector)*qpe*qpe;
00520 meanUTPos += strip->tpos*qpe*qpe;
00521 // cout << "U STRIP : " << strip->Plane << " : " << strip->Strip << " : " << qpe << endl;
00522 }
00523 if(strip->planeview==3 && abs(ndstripno(strip->plane, strip->strip,strip->planeview, detector)-imeanVTemp)<STRIP_WINDOW){
00524 nVKept++;
00525 sumQ += qpe;
00526 VsumQ += qpe*qpe;
00527 sumZ += strip->plane*qpe;
00528 sumV += ndstripno(strip->plane, strip->strip,strip->planeview, detector)*qpe*qpe;
00529 meanVTPos += strip->tpos*qpe*qpe;
00530 //cout << "V STRIP : " << strip->Plane << " : " << strip->Strip << " : " << qpe << endl;
00531 }
00532 }
00533 }
00534 }
00535
00536 // store mean charge-weighted positions
00537 meanU = 0.;
00538 meanV = 0.;
00539 meanPlane = 0;
00540 if(UsumQ>0){
00541 meanU = sumU/UsumQ+0.5;
00542 meanUTPos = meanUTPos/UsumQ;
00543 }
00544 if(VsumQ>0){
00545 meanV = sumV/VsumQ+0.5;
00546 meanVTPos = meanVTPos/VsumQ;
00547 }
00548 if(sumQ>0){
00549 meanPlane = static_cast<int>(sumZ/sumQ);
00550 }
00551
00552 int imeanU = static_cast<int>(meanU);
00553 int imeanV = static_cast<int>(meanV);
00554 // cout << " MEANS : " << meanU << ":" << meanV << " " << imeanU << ":" << imeanV << endl;
00555
00556 // reserve the appropriate amount of space in vectors
00557 // this is purely to optimise memory usage
00558 UStrips.reserve(nU);
00559 VStrips.reserve(nV);
00560
00561 //Up until this point, ALL computations were done using PEs. Now, when the compactStrips
00562 //are being built, charge quantities will be PEs, sigcors, or something else. However, threshold
00563 //checks will continue to be with PEs.
00564
00565 // loop over the strips and build the compactStrips
00566 // apply attenuation corrections
00567
00568 // cout << "means tpos:" << meanUTPos << " " << meanVTPos <<endl;
00569
00570 float sumQcor = 0.;
00571 float sumQraw = 0.;
00572
00573 //Extracting charge information from tracks and showers making up an event
00574 int nrecstrips = (int)record->evthdr.nstrip;
00575 float* ph0 = new float[nrecstrips];
00576 float* ph1 = new float[nrecstrips];
00577
00578 if (qtype == 3 || qtype == 4 || qtype == 6) {
00579
00580 for (int istp = 0; istp < nrecstrips; istp++) {
00581 ph0[istp] = 0;
00582 ph1[istp] = 0;
00583 }
00584
00585 for (int j = 0; j < event->nshower; j++) {
00586 NtpSRShower* myshower = dynamic_cast<NtpSRShower*>(record->shw->At(event->shw[j]));
00587 for (int k = 0; k < myshower->nstrip; k++) {
00588 ph0[myshower->stp[k]] = 1000 * myshower->stpph0gev[k]; //GeV converted to MeV
00589 ph1[myshower->stp[k]] = 1000 * myshower->stpph1gev[k];
00590 }
00591 }
00592
00593 //Tracks are done second so that in case of overlapping hits, the track's
00594 //energy information is used. Track positions are known better, resulting
00595 //in better attenuation correction.
00596 for (int j = 0; j < event->ntrack; j++) {
00597 NtpSRTrack* mytrack = dynamic_cast<NtpSRTrack*>(record->trk->At(event->trk[j]));
00598 for (int k = 0; k < mytrack->nstrip; k++) {
00599 ph0[mytrack->stp[k]] = 1000 * mytrack->stpph0gev[k];
00600 ph1[mytrack->stp[k]] = 1000 * mytrack->stpph1gev[k];
00601 }
00602 }
00603
00604 }
00605
00606 AttenCorr *atcor = new AttenCorr();
00607
00608 //Used to correct sigcor for attenuation, using AttenCorr determination of hit location on strip
00609 Calibrator& cal = Calibrator::Instance();
00610 cal.GetAttenCalibrator().Reset(record->GetHeader().GetVldContext());
00611
00612 for(int istp = 0; istp< nstrips; istp++){
00613 if(event->stp[istp]<0) continue;
00614 const NtpSRStrip* strip = dynamic_cast<const NtpSRStrip*>(record->stp->At(event->stp[istp]));
00615 // const NtpTHStrip* stptruth= dynamic_cast<const NtpTHStrip*>(record->thstp->At(event->stp[istp]));
00616 // assert(stptruth);
00617 // if(stptruth!=NULL && ispurextalk(stptruth->sigflg)) continue;
00618
00619 float qpeE = strip->ph0.pe;
00620 float qpeW = strip->ph1.pe;
00621
00622 //for qtype = 3, 4, or 6, should check if strip has energy info
00623 //it's possible for a strip to have pe info but not energy info if, for example, it has not been included as part of a track or shower
00624 //for qtype = 1,2,5, should check if strip somehow doesn't have sigcor info
00625 bool checkgev = 1;
00626 if (qtype == 3 || qtype == 4 || qtype == 6) {
00627 if (ph0[strip->index] + ph1[strip->index] == 0) checkgev = 0;
00628 }
00629 if (qtype == 1 || qtype == 2 || qtype == 5) {
00630 if (strip->ph0.sigcor + strip->ph1.sigcor == 0) checkgev = 0;
00631 }
00632
00633 if(qpeE+qpeW>_peThreshold && qpeE+qpeW < 1000 && strip->plane<=lastPlaneToUse && checkgev){
00634
00635 float qchargeCor = 0;
00636 float qchargeE = qpeE;
00637 float qchargeW = qpeW;
00638
00639 if (qtype == 0) {
00640 atcor->CalcCorr(record,strip,meanUTPos,meanVTPos,0);
00641 qchargeCor = atcor->qpecor;
00642 }
00643
00644 if (qtype == 1 || qtype == 2 ) {
00645 FloatErr xstrip = (atcor->lE - atcor->lW) / 2;
00646 qchargeE = strip->ph0.sigcor;
00647 qchargeW = strip->ph1.sigcor;
00648 if (detector==Detector::kNear) { //Sigcors and sigmaps are different in ND
00649 qchargeE *= FN_SIGMAP_RATIO;
00650 qchargeW *= FN_SIGMAP_RATIO;
00651 }
00652 PlexStripEndId end[2];
00653 end[0] = strip->GetStripEndId((Detector::Detector_t)detector); end[0].SetEnd(StripEnd::kNegative);
00654 end[1] = strip->GetStripEndId((Detector::Detector_t)detector); end[1].SetEnd(StripEnd::kPositive);
00655 FloatErr qchargeECor = cal.GetAttenCorrected(FloatErr(qchargeE),xstrip,end[0]);
00656 FloatErr qchargeWCor = cal.GetAttenCorrected(FloatErr(qchargeW),xstrip,end[1]);
00657 qchargeCor = qchargeECor.GetValue() + qchargeWCor.GetValue();
00658 }
00659
00660 if (qtype == 3 || qtype == 4 || qtype == 6) {
00661 qchargeE = ph0[strip->index];
00662 qchargeW = ph1[strip->index];
00663 qchargeCor = qchargeE + qchargeW;
00664 }
00665
00666 if (qtype == 5) {
00667 qchargeE = strip->ph0.sigcor;
00668 qchargeW = strip->ph1.sigcor;
00669
00670 atcor->CalcCorr(record,strip,meanUTPos,meanVTPos,5);
00671 qchargeCor = atcor->qpecor;
00672
00673 if (detector==Detector::kNear) {
00674 qchargeE *= ND_PE_TO_SIGCOR_RATIO;
00675 qchargeW *= ND_PE_TO_SIGCOR_RATIO;
00676 qchargeCor *= ND_PE_TO_SIGCOR_RATIO;
00677 }
00678
00679 if (detector==Detector::kFar) {
00680 qchargeE *= FD_PE_TO_SIGCOR_RATIO;
00681 qchargeW *= FD_PE_TO_SIGCOR_RATIO;
00682 qchargeCor *= FD_PE_TO_SIGCOR_RATIO;
00683 }
00684 }
00685
00686 sumQcor+= qchargeCor;
00687 sumQraw+= qchargeE+qchargeW;
00688
00689 compactStrip_h compactStrip;
00690 compactStrip.plane = static_cast<short>(strip->plane-meanPlane+100);
00691 if(strip->planeview==2)compactStrip.strip = ndstripno(strip->plane, strip->strip,strip->planeview, detector)-imeanU+100;
00692 if(strip->planeview==3)compactStrip.strip = ndstripno(strip->plane, strip->strip,strip->planeview, detector)-imeanV+100;
00693
00694 if (qtype == 0 || qtype == 5) {
00695 compactStrip.icharge = static_cast<int>(qchargeCor * chargeScale);
00696 }
00697 if (qtype == 1 || qtype == 2 || qtype == 3 || qtype == 4 || qtype == 6) {
00698 compactStrip.icharge = static_cast<int>( (qchargeCor - ChargeToPe/2) * chargeScale / ChargeToPe);
00699 }
00700
00701 if(compactStrip.strip>=5&&compactStrip.strip<=195&&compactStrip.plane>=5&&compactStrip.plane<=195){
00702 if(strip->planeview==2)UStrips.push_back(compactStrip);
00703 if(strip->planeview==3)VStrips.push_back(compactStrip);
00704 }
00705
00706
00707 }//threshold
00708
00709 }//strips loop
00710
00711 delete [] ph0;
00712 delete [] ph1;
00713
00714 Qtot = static_cast<int>(sumQcor);
00715 Qtotraw = static_cast<int>(sumQraw);
00716
00717 return;
00718
00719 }
|
|
||||||||||||
|
Definition at line 744 of file MinosCompactEvent.cxx. References _peThreshold, chargeScale, ChargeType, eNu, compactStrip_h::icharge, idact, idnu, idres, meanPlane, meanU, meanV, nphysics, nPlanes, nremoved, nxtalk, nxtalk_mistagged, nxtalk_tagged, compactStrip_h::plane, Qtot, Qtotraw, Run, SetPEThreshold(), Snarl, compactStrip_h::strip, UStrips, VStrips, and y. 00744 {
00745
00746 // PE Scale factor for integer conversion: icharge = qpe * chargeScale
00747 chargeScale = event->chargeScale;
00748
00749 // PE Threshold
00750 SetPEThreshold(event->_peThreshold);
00751
00752 // set the global quantities
00753 Run = event->Run;
00754 Snarl = event->Snarl;
00755
00756 // set any MC quantities
00757 eNu = event->eNu;
00758 y = event->y;
00759 idact = event->idact;
00760 idres = event->idres;
00761 idnu = event->idnu;
00762
00763
00764 // reco quantities
00765 Qtot = event->Qtot;
00766 nPlanes = event->nPlanes;
00767 meanU = event->meanU;
00768 meanV = event->meanV;
00769 meanPlane = event->meanPlane;
00770
00771 nxtalk = event->nxtalk;
00772 nxtalk_tagged = event->nxtalk_tagged;
00773 nxtalk_mistagged = event->nxtalk_mistagged;
00774 nphysics = event->nphysics;
00775 nremoved = event->nremoved;
00776
00777 ChargeType = event->ChargeType;
00778
00779 //MHO0609 - Discovered this wasn't getting copied
00780 Qtotraw = event->Qtotraw;
00781
00782 // loop over the U strips
00783
00784 int imeanU = static_cast<int>(meanU);
00785 float fracU = meanU - static_cast<float>(imeanU);
00786
00787 const int nustrips = event->UStrips.size();
00788 for(int istp = 0; istp< nustrips; istp++){
00789 int plane = event->UStrips[istp].plane;
00790 int strip = event->UStrips[istp].strip;
00791 int icharge = event->UStrips[istp].icharge;
00792 float cstrip = (static_cast<float>(strip) -100.0+stripCompressionFactor/2.0)/stripCompressionFactor + 100.0;
00793 if((stripCompressionFactor%2)==0 && fracU>0.5){
00794 cstrip = (static_cast<float>(strip) -101.0+stripCompressionFactor/2.0)/stripCompressionFactor + 100.0;
00795 }
00796
00797
00798 int compStrip = static_cast<int>(cstrip);
00799
00800
00801 bool notFound = true;
00802 for(UInt_t i=0;i<UStrips.size() && notFound;++i){
00803 if(UStrips[i].strip==compStrip && UStrips[i].plane==plane){
00804 notFound = false;
00805 UStrips[i].icharge += icharge;
00806 }
00807 }
00808 if(notFound){
00809 compactStrip_h newStrip;
00810 newStrip.strip = compStrip;
00811 newStrip.plane = plane;
00812 newStrip.icharge = icharge;
00813 UStrips.push_back(newStrip);
00814 }
00815 }
00816
00817
00818 // loop over the V strips
00819
00820
00821 int imeanV = static_cast<int>(meanV);
00822 float fracV = meanV - static_cast<float>(imeanV);
00823 const int nvstrips = event->VStrips.size();
00824 for(int istp = 0; istp< nvstrips; istp++){
00825 int plane = event->VStrips[istp].plane;
00826 int strip = event->VStrips[istp].strip;
00827 int icharge = event->VStrips[istp].icharge;
00828 float cstrip = (static_cast<float>(strip)-100.0+stripCompressionFactor/2.0)/stripCompressionFactor + 100.0;
00829 if((stripCompressionFactor%2)==0 && fracV>0.5){
00830 cstrip = (static_cast<float>(strip) -101.0+stripCompressionFactor/2.0)/stripCompressionFactor + 100.0;
00831 }
00832
00833 int compStrip = static_cast<int>(cstrip);
00834
00835 bool notFound = true;
00836 for(UInt_t i=0;i<VStrips.size() && notFound;++i){
00837 if(VStrips[i].strip==compStrip && VStrips[i].plane==plane){
00838 notFound = false;
00839 VStrips[i].icharge += icharge;
00840 }
00841 }
00842 if(notFound){
00843 compactStrip_h newStrip;
00844 newStrip.strip = compStrip;
00845 newStrip.plane = plane;
00846 newStrip.icharge = icharge;
00847 VStrips.push_back(newStrip);
00848 }
00849 }
00850
00851 return;
00852
00853 }
|
|
||||||||||||
|
Definition at line 858 of file MinosCompactEvent.cxx. References _peThreshold, chargeScale, ChargeType, eNu, compactStrip_h::icharge, idact, idnu, idres, meanPlane, meanU, meanV, nphysics, nPlanes, nremoved, nxtalk, nxtalk_mistagged, nxtalk_tagged, compactStrip_h::plane, Qtot, Qtotraw, Run, SetPEThreshold(), Snarl, compactStrip_h::strip, UStrips, VStrips, and y. 00858 {
00859
00860 // PE Scale factor for integer conversion: icharge = qpe * chargeScale
00861 chargeScale = event->chargeScale;
00862
00863 // PE Threshold
00864 SetPEThreshold(event->_peThreshold);
00865
00866 // set the global quantities
00867 Run = event->Run;
00868 Snarl = event->Snarl;
00869
00870 // set any MC quantities
00871 eNu = event->eNu;
00872 y = event->y;
00873 idact = event->idact;
00874 idres = event->idres;
00875 idnu = event->idnu;
00876
00877
00878 // reco quantities
00879 Qtot = event->Qtot;
00880 nPlanes = event->nPlanes;
00881 meanU = event->meanU;
00882 meanV = event->meanV;
00883 meanPlane = event->meanPlane;
00884
00885 nxtalk = event->nxtalk;
00886 nxtalk_tagged = event->nxtalk_tagged;
00887 nxtalk_mistagged = event->nxtalk_mistagged;
00888 nphysics = event->nphysics;
00889 nremoved = event->nremoved;
00890
00891 ChargeType = event->ChargeType;
00892
00893 //MHO0609 - Discovered this wasn't getting copied
00894 Qtotraw = event->Qtotraw;
00895
00896 // loop over the U strips
00897
00898 const int nustrips = event->UStrips.size();
00899 for(int istp = 0; istp< nustrips; istp++){
00900 int plane = event->UStrips[istp].plane;
00901 int strip = event->UStrips[istp].strip;
00902 int icharge = event->UStrips[istp].icharge;
00903 int compStrip = pattern[strip];
00904 bool notFound = true;
00905
00906 if (compStrip!=-1){
00907
00908 for(UInt_t i=0;i<UStrips.size() && notFound;++i){
00909 if(UStrips[i].strip==compStrip && UStrips[i].plane==plane){
00910 notFound = false;
00911 UStrips[i].icharge += icharge;
00912 }
00913 }
00914 if(notFound){
00915 compactStrip_h newStrip;
00916 newStrip.strip = compStrip;
00917 newStrip.plane = plane;
00918 newStrip.icharge = icharge;
00919 UStrips.push_back(newStrip);
00920 }
00921 }
00922 }
00923
00924 // loop over the V strips
00925
00926
00927 const int nvstrips = event->VStrips.size();
00928 for(int istp = 0; istp< nvstrips; istp++){
00929 int plane = event->VStrips[istp].plane;
00930 int strip = event->VStrips[istp].strip;
00931 int icharge = event->VStrips[istp].icharge;
00932 int compStrip = pattern[strip];
00933
00934 bool notFound = true;
00935
00936 if (compStrip!=-1){
00937
00938 for(UInt_t i=0;i<VStrips.size() && notFound;++i){
00939 if(VStrips[i].strip==compStrip && VStrips[i].plane==plane){
00940 notFound = false;
00941 VStrips[i].icharge += icharge;
00942 }
00943 }
00944 if(notFound){
00945 compactStrip_h newStrip;
00946 newStrip.strip = compStrip;
00947 newStrip.plane = plane;
00948 newStrip.icharge = icharge;
00949 VStrips.push_back(newStrip);
00950 }
00951 }
00952 }
00953
00954 return;
00955
00956 }
|
|
|
Definition at line 958 of file MinosCompactEvent.cxx. References _peThreshold, chargeScale, ChargeType, eNu, compactStrip_h::icharge, idact, idnu, idres, meanPlane, meanU, meanV, nphysics, nPlanes, nremoved, nxtalk, nxtalk_mistagged, nxtalk_tagged, compactStrip_h::plane, Qtot, Qtotraw, Run, SetPEThreshold(), Snarl, compactStrip_h::strip, UStrips, VStrips, and y. 00958 {
00959
00960 // PE Scale factor for integer conversion: icharge = qpe * chargeScale
00961 chargeScale = event->chargeScale;
00962
00963 //_peThreshold
00964 SetPEThreshold(event->_peThreshold);
00965
00966 // set the global quantities
00967 Run = event->Run;
00968 Snarl = event->Snarl;
00969
00970 // set any MC quantities
00971 eNu = event->eNu;
00972 y = event->y;
00973 idact = event->idact;
00974 idres = event->idres;
00975 idnu = event->idnu;
00976
00977 // reco quantities
00978 Qtot = event->Qtot;
00979 nPlanes = event->nPlanes;
00980 meanU = event->meanU;
00981 meanV = event->meanV;
00982 meanPlane = event->meanPlane;
00983
00984 nxtalk = event->nxtalk;
00985 nxtalk_tagged = event->nxtalk_tagged;
00986 nxtalk_mistagged = event->nxtalk_mistagged;
00987 nphysics = event->nphysics;
00988 nremoved = event->nremoved;
00989
00990 ChargeType = event->ChargeType;
00991
00992 //MHO0609 - Discovered this wasn't getting copied
00993 Qtotraw = event->Qtotraw;
00994
00995 // loop over the U strips
00996 const int nustrips = event->UStrips.size();
00997 for(int istp = 0; istp< nustrips; istp++){
00998 compactStrip_h newStrip;
00999 newStrip.strip = event->UStrips[istp].strip;
01000 newStrip.plane = event->UStrips[istp].plane;
01001 newStrip.icharge = event->UStrips[istp].icharge;
01002 UStrips.push_back(newStrip);
01003 }
01004
01005 // loop over the V strips
01006 const int nvstrips = event->VStrips.size();
01007 for(int istp = 0; istp< nvstrips; istp++){
01008 compactStrip_h newStrip;
01009 newStrip.strip = event->VStrips[istp].strip;
01010 newStrip.plane = event->VStrips[istp].plane;
01011 newStrip.icharge = event->VStrips[istp].icharge;
01012 VStrips.push_back(newStrip);
01013 }
01014
01015 return;
01016
01017 }
|
|
|
Definition at line 737 of file MinosCompactEvent.cxx. References UStrips, and VStrips.
|
|
||||||||||||||||||||
|
Definition at line 1020 of file MinosCompactEvent.cxx. References _peThreshold, NtpStRecord::evt, NtpSREvent::nstrip, NtpSRPulseHeight::pe, NtpSRStrip::ph0, NtpSRStrip::ph1, NtpSRStrip::plane, NtpStRecord::stp, and NtpSREvent::stp. Referenced by MinosCompactEvent(). 01020 {
01021
01022 // efficiency not critical here, so keep it simple...
01023
01024 const int maxplanes = 500;
01025 int planecount[maxplanes];
01026
01027 int firstplane = 999;
01028 int lastplane = 0;
01029 for (Int_t i=0;i<maxplanes;i++) planecount[i] = 0;
01030
01031 const NtpSREvent* event = dynamic_cast<const NtpSREvent*>(record->evt->At(eventno));
01032 const int nstrips = event->nstrip;
01033
01034 // fill array of plane counts
01035 for(int istp = 0; istp< nstrips; istp++){
01036 if (event->stp[istp]<0) continue;
01037 const NtpSRStrip* strip = dynamic_cast<const NtpSRStrip*>(record->stp->At(event->stp[istp]));
01038 float qpe=strip->ph0.pe+strip->ph1.pe;
01039 if (qpe>_peThreshold && qpe<1000) {
01040 planecount[strip->plane]++;
01041 if (strip->plane>lastplane) lastplane = strip->plane;
01042 if (strip->plane<firstplane) firstplane = strip->plane;
01043 }
01044 }
01045
01046 // find plane upstream of cut-able strips
01047 Int_t downstream_strip_count = 0;
01048 Int_t searchstart;
01049 for (searchstart=lastplane; searchstart>=firstplane;searchstart--) {
01050 downstream_strip_count += planecount[searchstart];
01051 if (downstream_strip_count>max_strips_cut) break;
01052 }
01053
01054 // loop over candidate planes, looking for first big gap
01055 Int_t gap_count = 0;
01056 Int_t cut_beyond_here = 9999;
01057 for (Int_t iP=searchstart+1; iP<=lastplane;iP++) {
01058 if (planecount[iP]==0) gap_count++;
01059 else gap_count = 0;
01060 if (gap_count>max_gap) {
01061 cut_beyond_here = iP;
01062 break;
01063 }
01064 }
01065
01066 return cut_beyond_here;
01067 }
|
|
|
Definition at line 105 of file MinosCompactEvent.cxx. References _peThreshold, chargeScale, eNu, idact, idnu, idres, meanPlane, meanU, meanV, nphysics, nPlanes, nremoved, nxtalk, nxtalk_mistagged, nxtalk_tagged, Qtot, Run, Snarl, UStrips, VStrips, and y. 00105 {
00106
00107 //If variables are not identical then set default.
00108 if(Run!=pcce2->Run) Run=-1;
00109 if(Snarl!=pcce2->Snarl) Snarl=-1;
00110 if(chargeScale!=pcce2->chargeScale) chargeScale=-1;
00111 if(_peThreshold!=pcce2->_peThreshold) _peThreshold=-1;
00112 if(meanU!=pcce2->meanU) meanU=-1;
00113 if(meanV!=pcce2->meanV) meanV=-1;
00114 if(meanPlane!=pcce2->meanPlane) meanPlane=-1;
00115 if(Qtot!=pcce2->Qtot) Qtot=-1;
00116 if(nPlanes!=pcce2->nPlanes) nPlanes=-1;
00117 if(eNu!=pcce2->eNu) eNu=-1;
00118 if(y!=pcce2->y) y=-1;
00119 if(idact!=pcce2->idact) idact=-1;
00120 if(idres!=pcce2->idres) idres=-1;
00121 if(idnu!=pcce2->idnu) idnu=-1;
00122 if(nxtalk!=pcce2->nxtalk) nxtalk=-1;
00123 if(nxtalk_tagged!=pcce2->nxtalk_tagged) nxtalk_tagged=-1;
00124 if(nxtalk_mistagged!=pcce2->nxtalk_mistagged) nxtalk_mistagged=-1;
00125 if(nphysics!=pcce2->nphysics) nphysics=-1;
00126 if(nremoved!=pcce2->nremoved) nremoved=-1;
00127
00128 //Loop over U strips
00129 const int nustrips = UStrips.size();
00130 const int nustrips2 = pcce2->UStrips.size();
00131
00132 for(int istp2 = 0; istp2< nustrips2; istp2++){
00133 Bool_t added=false;
00134 for(int istp = 0; istp < nustrips; istp++){
00135 if(UStrips[istp].plane == pcce2->UStrips[istp2].plane
00136 && UStrips[istp].strip == pcce2->UStrips[istp2].strip
00137 && added==false
00138 ){
00139 UStrips[istp].icharge += pcce2->UStrips[istp2].icharge;
00140 added=true;
00141 }
00142
00143 }
00144 if(added==false){
00145 UStrips.push_back(pcce2->UStrips[istp2]);
00146 }
00147 }
00148
00149 //Loop over V strips
00150 const int nvstrips = VStrips.size();
00151 const int nvstrips2 = pcce2->VStrips.size();
00152
00153 for(int istp2 = 0; istp2< nvstrips2; istp2++){
00154 Bool_t added=false;
00155 for(int istp = 0; istp < nvstrips; istp++){
00156 if(VStrips[istp].plane == pcce2->VStrips[istp2].plane
00157 && VStrips[istp].strip == pcce2->VStrips[istp2].strip
00158 && added==false
00159 ){
00160 VStrips[istp].icharge += pcce2->VStrips[istp2].icharge;
00161 added=true;
00162 }
00163
00164 }
00165 if(added==false){
00166 VStrips.push_back(pcce2->VStrips[istp2]);
00167 }
00168 }
00169
00170 }
|
|
|
Definition at line 186 of file MinosCompactEvent.cxx. References chargeScale, ChargeType, eNu, idact, idnu, idres, meanPlane, meanU, meanV, nphysics, nPlanes, nremoved, nxtalk, nxtalk_mistagged, nxtalk_tagged, Qtot, Qtotraw, Run, Snarl, UStrips, VStrips, and y. 00186 {
00187
00188 cout << "***Printing MinosCompactEvent" << endl;
00189 cout << "Run: " << Run << endl;
00190 cout << "Snarl: " << Snarl << endl;
00191 cout << "chargeScale: " << chargeScale << endl;
00192 cout << "meanU and meanV: " << meanU << " , " << meanV << endl;
00193 cout << "meanPlane: " << meanPlane << endl;
00194 cout << "Qtot: " << Qtot << endl;
00195
00196 //MHO0509
00197 cout << "Qtotraw: " << Qtotraw << endl;
00198
00199 cout << "nPlanes: " << nPlanes << endl;
00200 cout << "eNu: " << eNu << endl;
00201 cout << "y: " << y << endl;
00202 cout << "idnu and idact: " << idnu << " , " << idact << endl;
00203 cout << "idres: " << idres << endl;
00204 cout << "nxtalk: " << nxtalk << endl;
00205 cout << "nxtalk_tagged: " << nxtalk_tagged << endl;
00206 cout << "nxtalk_mistagged: " << nxtalk_mistagged << endl;
00207 cout << "nphysics: " << nphysics << endl;
00208 cout << "nremoved: " << nremoved << endl;
00209
00210 //MHO0509
00211 cout << "ChargeType: " << ChargeType << endl;
00212
00213 const int nustrips = UStrips.size();
00214 cout << "--> U strips (pln,stp,q):" << nustrips << endl;
00215 for(int istp = 0; istp< nustrips; istp++){
00216 cout << UStrips[istp].plane << "," << UStrips[istp].strip << "," << UStrips[istp].icharge << endl;
00217 }
00218 const int nvstrips = VStrips.size();
00219 cout << "--> V strips (pln,stp,q):" << nvstrips << endl;
00220 for(int istp = 0; istp< nvstrips; istp++){
00221 cout << VStrips[istp].plane << "," << VStrips[istp].strip << "," << VStrips[istp].icharge << endl;
00222 }
00223
00224 }
|
|
|
Definition at line 172 of file MinosCompactEvent.cxx. References UStrips, and VStrips. 00172 {
00173
00174 const int nustrips = UStrips.size();
00175 for(int istp = 0; istp< nustrips; istp++){
00176 UStrips[istp].icharge=(int)(UStrips[istp].icharge*factor);
00177 }
00178
00179 const int nvstrips = VStrips.size();
00180 for(int istp = 0; istp< nvstrips; istp++){
00181 VStrips[istp].icharge=(int)(VStrips[istp].icharge*factor);
00182 }
00183
00184 }
|
|
|
Definition at line 93 of file MinosCompactEvent.cxx. References _peThreshold. Referenced by MinosCompactEvent(). 00094 {
00095
00096 _peThreshold = q;
00097
00098
00099 }
|
|
|
Definition at line 722 of file MinosCompactEvent.cxx. References total(), UStrips, and VStrips. 00722 {
00723
00724 // Calculate the size of the object including what's in the vectors
00725
00726 int total = 0 ;
00727
00728 total += sizeof(*this);
00729 int nU = UStrips.capacity();
00730 int nV = VStrips.capacity();
00731 total += sizeof(UStrips[0])*(nU+nV);
00732
00733 return total;
00734 }
|
|
|
Definition at line 49 of file MinosCompactEvent.h. Referenced by GetLastPlaneToUse(), Merge(), MinosCompactEvent(), and SetPEThreshold(). |
|
|
Definition at line 53 of file MinosCompactEvent.h. Referenced by MCNNRunner::CompareEvents(), MinosEventDisplay::Draw(), Merge(), MinosCompactEvent(), and Print(). |
|
|
Definition at line 79 of file MinosCompactEvent.h. Referenced by MCNNRunner::CompareEvents(), MinosCompactEvent(), and Print(). |
|
|
Definition at line 62 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), Print(), ComparisonResult::SetNeutrino(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 64 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), Print(), ComparisonResult::SetNeutrino(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 66 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), Print(), ComparisonResult::SetNeutrino(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 65 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), Print(), ComparisonResult::SetNeutrino(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 58 of file MinosCompactEvent.h. Referenced by MCNNFiller::FillMCNN(), Merge(), MinosCompactEvent(), Print(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 56 of file MinosCompactEvent.h. Referenced by MCNNFiller::FillMCNN(), Merge(), MinosCompactEvent(), Print(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 57 of file MinosCompactEvent.h. Referenced by MCNNFiller::FillMCNN(), Merge(), MinosCompactEvent(), Print(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 74 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), and Print(). |
|
|
Definition at line 61 of file MinosCompactEvent.h. Referenced by MCNNRunner::CompactInput(), MCNNFiller::FillMCNN(), MCNNRunner::MakeComparison(), Merge(), MinosCompactEvent(), Print(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 75 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), and Print(). |
|
|
Definition at line 71 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), and Print(). |
|
|
Definition at line 73 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), and Print(). |
|
|
Definition at line 72 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), and Print(). |
|
|
Definition at line 59 of file MinosCompactEvent.h. Referenced by MCNNRunner::CompactInput(), MCNNRunner::MakeComparison(), Merge(), MinosCompactEvent(), Print(), ComparisonResult::SetNeutrino(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 60 of file MinosCompactEvent.h. Referenced by MinosCompactEvent(), and Print(). |
|
|
Definition at line 50 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), Print(), ComparisonResult::SetNeutrino(), and MinosExtraCompactResult::SetNu(). |
|
|
Definition at line 51 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), Print(), and ComparisonResult::SetNeutrino(). |
|
|
|
|
Definition at line 63 of file MinosCompactEvent.h. Referenced by Merge(), MinosCompactEvent(), Print(), ComparisonResult::SetNeutrino(), and MinosExtraCompactResult::SetNu(). |
1.3.9.1