503 fParams.AddNamedSlot(
"DminIC");
509 fParams.AddNamedSlot(
"DminDC");
542 fParams.AddNamedSlot(
"DtmargA");
548 fParams.AddNamedSlot(
"DtmargIC");
554 fParams.AddNamedSlot(
"DtmargDC");
560 fParams.AddNamedSlot(
"DtmargI");
583 fParams.AddNamedSlot(
"MaxdhitA");
589 fParams.AddNamedSlot(
"MaxdhitIC");
595 fParams.AddNamedSlot(
"MaxdhitDC");
601 fParams.AddNamedSlot(
"MaxdhitI");
632 fParams.AddNamedSlot(
"DtminA");
633 fParams.AddNamedSlot(
"DtmaxA");
642 fParams.AddNamedSlot(
"DtminIC");
643 fParams.AddNamedSlot(
"DtmaxIC");
652 fParams.AddNamedSlot(
"DtminDC");
653 fParams.AddNamedSlot(
"DtmaxDC");
662 fParams.AddNamedSlot(
"DtminI");
663 fParams.AddNamedSlot(
"DtmaxI");
694 fParams.AddNamedSlot(
"TangmaxA");
696 fParams.AddNamedSlot(
"JangmaxA");
704 fParams.AddNamedSlot(
"TangmaxIC");
706 fParams.AddNamedSlot(
"JangmaxIC");
714 fParams.AddNamedSlot(
"TangmaxDC");
716 fParams.AddNamedSlot(
"JangmaxDC");
724 fParams.AddNamedSlot(
"TangmaxI");
726 fParams.AddNamedSlot(
"JangmaxI");
760 fParams.AddNamedSlot(
"TdistmaxA");
761 fParams.AddNamedSlot(
"TinvolA");
770 fParams.AddNamedSlot(
"TdistmaxIC");
771 fParams.AddNamedSlot(
"TinvolIC");
780 fParams.AddNamedSlot(
"TdistmaxDC");
781 fParams.AddNamedSlot(
"TinvolDC");
790 fParams.AddNamedSlot(
"TdistmaxI");
791 fParams.AddNamedSlot(
"TinvolI");
836 fParams.AddNamedSlot(
"JangmaxA");
837 fParams.AddNamedSlot(
"JiterateA");
846 fParams.AddNamedSlot(
"JangmaxIC");
847 fParams.AddNamedSlot(
"JiterateIC");
856 fParams.AddNamedSlot(
"JangmaxDC");
857 fParams.AddNamedSlot(
"JiterateDC");
866 fParams.AddNamedSlot(
"JangmaxI");
867 fParams.AddNamedSlot(
"JiterateI");
901 fParams.AddNamedSlot(
"JdistmaxA");
902 fParams.AddNamedSlot(
"JinvolA");
911 fParams.AddNamedSlot(
"JdistmaxIC");
912 fParams.AddNamedSlot(
"JinvolIC");
921 fParams.AddNamedSlot(
"JdistmaxDC");
922 fParams.AddNamedSlot(
"JinvolDC");
931 fParams.AddNamedSlot(
"JdistmaxI");
932 fParams.AddNamedSlot(
"JinvolI");
979 if (flag>=-5 && flag<=4)
fAsTypeA=flag;
981 fParams.AddNamedSlot(
"AsTypeA");
982 fParams.AddNamedSlot(
"WstringA");
991 fParams.AddNamedSlot(
"AsTypeIC");
992 fParams.AddNamedSlot(
"WstringIC");
1001 fParams.AddNamedSlot(
"AsTypeDC");
1002 fParams.AddNamedSlot(
"WstringDC");
1009 if (flag>=-5 && flag<=4)
fAsTypeI=flag;
1011 fParams.AddNamedSlot(
"AsTypeI");
1012 fParams.AddNamedSlot(
"WstringI");
1046 fParams.AddNamedSlot(
"Hitweight");
1096 fParams.AddNamedSlot(
"ConditionalReco");
1113 fParams.AddNamedSlot(
"QvalueCut");
1127 NcJob* parent=(
NcJob*)(gROOT->GetListOfTasks()->FindObject(name.Data()));
1129 if (!parent)
return;
1139 if (seldev->
GetSignal(
"Select") < 0.1)
return;
1143 fParams.SetNameTitle(ClassName(),
"Reco parameters");
1176 TObjArray* devs=
fEvt->GetDevices(
"IceAOM");
1177 if (!devs)
return 0;
1178 Int_t naoms=devs->GetEntries();
1179 if (!naoms)
return 0;
1183 for (Int_t i=0; i<naoms; i++)
1185 aoms.Add(devs->At(i));
1190 for (Int_t iom=0; iom<naoms; iom++)
1197 if (ngood<fMinmodA || ngood>
fMaxmodA)
return 0;
1199 Int_t ngood1=
fEvt->GetStringMax(
"IceAOM");
1205 const Float_t c=0.299792458;
1222 Float_t t1,t2,dt,t0;
1239 for (Int_t i1=0; i1<naoms; i1++)
1242 if (!omx1)
continue;
1249 if (maxhits>0 && omx1->
GetNhits()>maxhits) ordered=omx1->
SortHits(
"LE",1,0,7);
1251 for (Int_t j1=1; j1<=omx1->
GetNhits(); j1++)
1255 if (nh1>=maxhits)
break;
1271 if (i1==(naoms-1))
break;
1273 nh1=hits1.GetEntries();
1276 for (Int_t i2=i1+1; i2<naoms; i2++)
1279 if (!omx2)
continue;
1285 if (dist<
fDminA)
continue;
1291 if (maxhits>0 && omx2->
GetNhits()>maxhits) ordered=omx2->
SortHits(
"LE",1,0,7);
1293 for (Int_t j2=1; j2<=omx2->
GetNhits(); j2++)
1297 if (nh2>=maxhits)
break;
1310 nh2=hits2.GetEntries();
1319 for (Int_t ih1=0; ih1<nh1; ih1++)
1323 for (Int_t ih2=0; ih2<nh2; ih2++)
1330 dtres=fabs(dt)-dist/c;
1333 if (dtres<dtmin || dtres>dtmax)
continue;
1340 tsx->
Add(0,0,(
int)t0);
1350 AssociateHits(tes,hits,
fAsTypeA,
fWstringA,
fDtminA,
fDtmaxA,
fMaxdhitA,
fVgroupA,
fCleanA,1,qmax);
1353 if (qmax<=0)
return 0;
1358 Int_t nte=tes.GetEntries();
1366 Int_t njets=jets.GetEntries();
1367 if (!njets)
return 0;
1370 ordered=
fEvt->SortJets(-2,&jets);
1371 TObjArray jets2(*ordered);
1378 if (name==
"") name=ClassName();
1380 TString title=ClassName();
1381 title+=
" Amanda track";
1406 TString domclass=
"IceICDOM";
1409 if (!ntes)
return 0;
1413 AssociateHits(tes,hits,
fAsTypeIC,
fWstringIC,
fDtminIC,
fDtmaxIC,
fMaxdhitIC,
fVgroupIC,
fCleanIC,
fSlcIC,qmax);
1416 if (qmax<=0)
return 0;
1421 Int_t nte=tes.GetEntries();
1429 Int_t njets=jets.GetEntries();
1430 if (!njets)
return 0;
1433 TObjArray* ordered=
fEvt->SortJets(-2,&jets);
1434 TObjArray jets2(*ordered);
1441 if (name==
"") name=ClassName();
1443 TString title=ClassName();
1444 title+=
" standard IceCube track";
1471 if (!ntes)
return 0;
1475 AssociateHits(tes,hits,
fAsTypeI,
fWstringI,
fDtminI,
fDtmaxI,
fMaxdhitI,
fVgroupI,
fCleanI,
fSlcI,qmax);
1478 if (qmax<=0)
return 0;
1483 Int_t nte=tes.GetEntries();
1491 Int_t njets=jets.GetEntries();
1492 if (!njets)
return 0;
1495 TObjArray* ordered=
fEvt->SortJets(-2,&jets);
1496 TObjArray jets2(*ordered);
1503 if (name==
"") name=ClassName();
1505 TString title=ClassName();
1506 title+=
" InIce track";
1531 TString domclass=
"IceDCDOM";
1538 if (!ntes)
return 0;
1542 AssociateHits(tes,hits,
fAsTypeDC,
fWstringDC,
fDtminDC,
fDtmaxDC,
fMaxdhitDC,
fVgroupDC,
fCleanDC,
fSlcDC,qmax);
1545 if (qmax<=0)
return 0;
1550 Int_t nte=tes.GetEntries();
1558 Int_t njets=jets.GetEntries();
1559 if (!njets)
return 0;
1562 TObjArray* ordered=
fEvt->SortJets(-2,&jets);
1563 TObjArray jets2(*ordered);
1570 if (name==
"") name=ClassName();
1572 TString title=ClassName();
1573 title+=
" DeepCore track";
1579Int_t
IceDwalk::MakeTEs(Int_t cln,Int_t maxhits,Float_t dmin,Float_t dtmarg,Float_t dtmin,Float_t dtmax,TString domclass,TObjArray& tes,TObjArray& hits,Int_t gethits)
1599 TObjArray* devs=
fEvt->GetDevices(domclass);
1600 if (!devs)
return 0;
1601 Int_t ndoms=devs->GetEntries();
1602 if (!ndoms)
return 0;
1606 for (Int_t i=0; i<ndoms; i++)
1608 doms.Add(devs->At(i));
1615 for (Int_t idom=0; idom<ndoms; idom++)
1620 if (omx->InheritsFrom(
"IceICDOM")) ngoodIC++;
1621 if (omx->InheritsFrom(
"IceIDOM")) ngoodI++;
1622 if (omx->InheritsFrom(
"IceDCDOM")) ngoodDC++;
1624 if (ngoodIC<fMinmodIC || ngoodIC>
fMaxmodIC)
return 0;
1625 if (ngoodI<fMinmodI || ngoodI>
fMaxmodI)
return 0;
1626 if (ngoodDC<fMinmodDC || ngoodDC>
fMaxmodDC)
return 0;
1628 Int_t ngood1IC=
fEvt->GetStringMax(
"IceICDOM");
1629 Int_t ngood1I=
fEvt->GetStringMax(
"IceIDOM");
1630 Int_t ngood1DC=
fEvt->GetStringMax(
"IceDCDOM");
1632 const Float_t c=0.299792458;
1653 Float_t t1,t2,dt,t0;
1661 for (Int_t i1=0; i1<ndoms; i1++)
1664 if (!omx1)
continue;
1674 if (omx1->InheritsFrom(
"IceICDOM"))
1680 if (omx1->InheritsFrom(
"IceDCDOM"))
1689 if (maxhits<0)
continue;
1692 if (maxhits>0 && omx1->
GetNhits()>maxhits) ordered=omx1->
SortHits(
"ADC",-1,0,7);
1694 for (Int_t j1=1; j1<=omx1->
GetNhits(); j1++)
1698 if (nh1>=maxhits)
break;
1718 for (Int_t j1=0; j1<hits.GetEntries(); j1++)
1723 if (sx1->
GetSignal(
"SLC")>0.5)
continue;
1725 if (omx==omx1) hits1.Add(sx1);
1730 if (i1==(ndoms-1))
break;
1732 nh1=hits1.GetEntries();
1735 for (Int_t i2=i1+1; i2<ndoms; i2++)
1738 if (!omx2)
continue;
1743 if (dist<dmin)
continue;
1751 if (omx2->InheritsFrom(
"IceICDOM"))
1757 if (omx2->InheritsFrom(
"IceDCDOM"))
1766 if (maxhits<0)
continue;
1769 if (maxhits>0 && omx2->
GetNhits()>maxhits) ordered=omx2->
SortHits(
"ADC",-1,0,7);
1771 for (Int_t j2=1; j2<=omx2->
GetNhits(); j2++)
1775 if (nh2>=maxhits)
break;
1784 if (sx2->
GetSignal(
"SLC")>0.5)
continue;
1791 for (Int_t j2=0; j2<hits.GetEntries(); j2++)
1796 if (sx2->
GetSignal(
"SLC")>0.5)
continue;
1798 if (omx==omx2) hits2.Add(sx2);
1802 nh2=hits2.GetEntries();
1811 for (Int_t ih1=0; ih1<nh1; ih1++)
1815 for (Int_t ih2=0; ih2<nh2; ih2++)
1822 dtres=fabs(dt)-dist/c;
1825 if (dtres<dtmin || dtres>dtmax)
continue;
1832 tsx->
Add(0,0,(
int)t0);
1840 Int_t ntes=tes.GetEntries();
1845void IceDwalk::AssociateHits(TObjArray& tes,TObjArray& hits,Int_t astype,Float_t ws,Float_t dtmin,Float_t dtmax,Float_t maxdhit,Int_t vgroup,Int_t cln,Int_t slc,Float_t& qmax)
1853 const Float_t pi=acos(-1.);
1854 const Float_t c=0.299792458;
1855 const Float_t npice=1.31768387;
1856 const Float_t ngice=1.35075806;
1857 const Float_t thetac=acos(1./npice);
1861 if (vgroup) alphac=atan((1.-npice/ngice)/sqrt(npice*npice-1.));
1866 Int_t nte=tes.GetEntries();
1867 Int_t nh=hits.GetEntries();
1873 Float_t dist,t0,tgeo,tres;
1916 Float_t lmin,lmax,spanl,medianl,meanl,sigmal,spreadl,expspreadl;
1917 Float_t hproj,hprojmin,hprojmax,span,median,mean,sigma,spread,expspread;
1918 Float_t mediant,meant,sigmat,spreadt;
1919 Float_t term1,term2,term3,term4,term5;
1921 for (Int_t jte=0; jte<nte; jte++)
1927 t0=
fEvt->GetDifference(tt0,
"ns");
1935 for (Int_t jh=0; jh<nh; jh++)
1941 if (!slc && sx->
GetSignal(
"SLC")>0.5)
continue;
1947 if (omx->InheritsFrom(
"IceAOM"))
1954 zhit=omx->
GetX(3,
"car");
1963 dist=fabs(hproj)+d/tan(pi/2.-thetac-alphac);
1964 if (hproj<0) dist=-dist;
1971 if (tres<dtmin || tres>dtmax || d>maxdhit*lambda)
continue;
1975 levers.
Enter(fabs(hproj));
1976 hprojs.
Enter(hproj);
1988 if (sx->
GetSignal(
"SLC")<0.5) nahlc=nahlc+1;
1994 if (sx->
GetSignal(
"SLC")<0.5) nahlc=nahlc+(amp/frac);
2000 nas=
fEvt->GetNstrings(*te,
"IceGOM");
2001 nam=
fEvt->GetNmodules(*te,
"IceGOM");
2004 if (nah>0) frac=nahlc/nah;
2007 if (astype==1) nax=nah;
2008 if (astype==2) nax=float(nas);
2009 if (astype==3) nax=nah*float(nas);
2010 if (astype==4) nax=nah+frac+ws*float(nas-1)/float(nas);
2011 if (astype==-1) nax=float(nam)+ws*float(nas);
2012 if (astype==-2) nax=float(nam)+nah/float(nam);
2013 if (astype==-3) nax=float(nam*nas);
2014 if (astype==-4) nax=float(nam)+frac+ws*float(nas-1)/float(nas);
2015 if (astype==-5) nax=float(nam)+nah+frac+ws*float(nas-1)/float(nas);
2026 if (spanl>0) expspreadl=(0.5*pow(lmin,2)+0.5*pow(lmax,2)+pow(medianl,2)-medianl*(lmin+lmax))/spanl;
2029 span=hprojmax-hprojmin;
2036 if (span>0) expspread=(0.5*pow(hprojmin,2)+0.5*pow(hprojmax,2)+pow(median,2)-median*(hprojmin+hprojmax))/span;
2043 if (span>0) term1=2.*spread/span;
2046 if (spanl>0) term2=2.*spreadl/spanl;
2049 if (spread>0) term3=fabs(spread-expspread)/spread;
2052 if (spreadl>0) term4=fabs(spreadl-expspreadl)/spreadl;
2055 if (spreadt>0) term5=fabs(mediant)/spreadt;
2057 qtc=nax*(term1+term2)-term3-term4-term5;
2058 if (fabs(median)>span/2.) qtc=0;
2060 if (qtc>qmax) qmax=qtc;
2101 Int_t nte=tes.GetEntries();
2105 for (Int_t jtc=0; jtc<nte; jtc++)
2118 if (nax<=0 || qtc<0.8*qmax)
2165 Int_t nte=tes.GetEntries();
2169 Float_t vec[3],err[3];
2171 Float_t t0,dist,dist2;
2184 TObjArray* signals=0;
2187 for (Int_t jtc1=0; jtc1<nte; jtc1++)
2202 pos.
Enter(vec[0],vec[1],vec[2]);
2203 t0=
fEvt->GetDifference(ts1,
"ns");
2207 for (Int_t jtc2=0; jtc2<nte; jtc2++)
2209 if (jtc2==jtc1)
continue;
2227 if (dist2<dist) dist=dist2;
2232 pos.
Enter(vec[0],vec[1],vec[2]);
2233 t0=
fEvt->GetDifference(ts2,
"ns");
2241 for (Int_t j=1; j<=3; j++)
2251 jt0->
Add(0,0,(
int)t0);
2259 if (ntk>ntkmax) ntkmax=ntk;
2260 nam=
fEvt->GetNmodules(*jx,
"IceGOM");
2261 if (nam>nammax) nammax=nam;
2262 nas=
fEvt->GetNstrings(*jx,
"IceGOM");
2263 if (nas>nasmax) nasmax=nas;
2265 if (nah>nahmax) nahmax=nah;
2270 for (Int_t is=0; is<signals->GetEntries(); is++)
2277 if (nahlc>nahlcmax) nahlcmax=nahlc;
2284 if (qtc>=(qmax-1.e-10))
2288 if (ntk>ntkmax) ntkmax=ntk;
2289 nam=
fEvt->GetNmodules(*jx,
"IceGOM");
2290 if (nam>nammax) nammax=nam;
2291 nas=
fEvt->GetNstrings(*jx,
"IceGOM");
2292 if (nas>nasmax) nasmax=nas;
2294 if (nah>nahmax) nahmax=nah;
2299 for (Int_t is=0; is<signals->GetEntries(); is++)
2306 if (nahlc>nahlcmax) nahlcmax=nahlc;
2315 Int_t njets=jets.GetEntries();
2321 for (Int_t ijet=0; ijet<njets; ijet++)
2326 nas=
fEvt->GetNstrings(*jx,
"IceGOM");
2327 nam=
fEvt->GetNmodules(*jx,
"IceGOM");
2331 if (ntk) avqtc=qtc/float(ntk);
2336 for (Int_t is=0; is<signals->GetEntries(); is++)
2344 if (qmax>0) sortval=avqtc/qmax;
2345 if (nammax>0) sortval+=float(nam)/float(nammax);
2346 if (nahmax>0) sortval+=float(nah)/float(nahmax);
2347 if (nahlcmax>0) sortval+=float(nahlc)/float(nahlcmax);
2367void IceDwalk::MergeJets(TObjArray& jets2,Float_t jangmax,Float_t jdistmax,Int_t jinvol,Int_t jiterate,Float_t qmax)
2396 Int_t njets=jets2.GetEntries();
2412 Float_t ang,dist,dist2,t0;
2416 Float_t vec[3],err[3];
2418 TObjArray* signals=0;
2424 for (Int_t jet1=0; jet1<njets; jet1++)
2426 jx1=(
NcJet*)jets2.At(jet1);
2435 pos.
Enter(vec[0],vec[1],vec[2]);
2436 t0=
fEvt->GetDifference(ts1,
"ns");
2438 for (Int_t jet2=0; jet2<njets; jet2++)
2440 jx2=(
NcJet*)jets2.At(jet2);
2441 if (!jx2 || jet2==jet1)
continue;
2457 if (dist2<dist) dist=dist2;
2462 pos.
Enter(vec[0],vec[1],vec[2]);
2463 t0=
fEvt->GetDifference(ts2,
"ns");
2465 for (Int_t jtk=1; jtk<=jx2->
GetNtracks(); jtk++)
2471 jets2.RemoveAt(jet2);
2472 if (jiterate) merged=1;
2478 for (Int_t k=1; k<=3; k++)
2488 jt0->
Add(0,0,(
int)t0);
2492 if (ntk>ntkmax) ntkmax=ntk;
2493 nas=
fEvt->GetNstrings(*jx1,
"IceGOM");
2494 if (nas>nasmax) nasmax=nas;
2495 nam=
fEvt->GetNmodules(*jx1,
"IceGOM");
2496 if (nam>nammax) nammax=nam;
2498 if (nah>nahmax) nahmax=nah;
2503 for (Int_t is=0; is<signals->GetEntries(); is++)
2510 if (nahlc>nahlcmax) nahlcmax=nahlc;
2517 for (Int_t jjet=0; jjet<njets; jjet++)
2522 nas=
fEvt->GetNstrings(*jx,
"IceGOM");
2523 nam=
fEvt->GetNmodules(*jx,
"IceGOM");
2527 if (ntk) avqtc=qtc/float(ntk);
2532 for (Int_t is=0; is<signals->GetEntries(); is++)
2540 if (qmax>0) sortval=avqtc/qmax;
2541 if (nammax>0) sortval+=float(nam)/float(nammax);
2542 if (nahmax>0) sortval+=float(nah)/float(nahmax);
2543 if (nahlcmax>0) sortval+=float(nahlc)/float(nahlcmax);
2563 TObjArray* ordered=
fEvt->SortJets(-2,&jets2);
2564 njets=ordered->GetEntries();
2566 for (Int_t icopy=0; icopy<njets; icopy++)
2568 jets2.Add(ordered->At(icopy));
2574Int_t
IceDwalk::StoreTracks(TObjArray& jets2,Int_t minahits,Int_t minamods,Float_t jangmax,TString name,TString title,TObjArray& hits)
2592 Int_t njets=jets2.GetEntries();
2594 t.SetNameTitle(name.Data(),title.Data());
2602 for (Int_t jet=0; jet<njets; jet++)
2611 if (nah<minahits)
continue;
2614 nam=
fEvt->GetNmodules(*jx,
"IceGOM");
2615 if (nam<minamods)
continue;
2619 if (qcut<0) qcut=
fQcut*qval;
2620 if (qval<qcut)
continue;
2662 if (jangmax<0)
break;
IceRecoBase derived TTask processor to perform (improved) direct walk reconstruction.
void SetQvalueCut(Float_t qcut)
Int_t DeepCore(TObjArray &hits)
void AssociateHits(TObjArray &tes, TObjArray &hits, Int_t astype, Float_t ws, Float_t dtmin, Float_t dtmax, Float_t maxdhit, Int_t vgroup, Int_t cln, Int_t slc, Float_t &qmax)
Int_t StoreTracks(TObjArray &jets, Int_t minahits, Int_t minamods, Float_t jangmax, TString name, TString title, TObjArray &hits)
Int_t IceCube(TObjArray &hits)
void ClusterTracks(TObjArray &tes, TObjArray &jets, Float_t tangmax, Int_t tinvol, Float_t tdistmax, Float_t qmax)
void SetHitWeight(Float_t w)
Int_t MakeTEs(Int_t cln, Int_t maxhits, Float_t dmin, Float_t dtmarg, Float_t dtmin, Float_t dtmax, TString domclass, TObjArray &tes, TObjArray &hits, Int_t gethits)
void SetTdistmax(Float_t d, TString s, Int_t invol=1)
void SetDmin(Float_t d, TString s)
Int_t InIce(TObjArray &hits)
void SetConditionalReco(Int_t flag)
void SetDthit(Float_t dtmin, Float_t dtmax, TString s)
void SetJdistmax(Float_t d, TString s, Int_t invol=1)
void SetMaxDhit(Float_t d, TString s)
void SetTangmax(Float_t ang, TString s)
void SetJangmax(Float_t ang, TString s, Int_t iter=1)
IceDwalk(const char *name="IceDwalk", const char *title="Direct walk reconstruction")
void SetDtmarg(Int_t dt, TString s)
void SetAsType(Int_t flag, TString s, Float_t w=-1)
virtual void Exec(Option_t *opt)
void MergeJets(TObjArray &jets, Float_t jangmax, Float_t jdistmax, Int_t jinvol, Int_t jiterate, Float_t qmax)
void SelectQvalue(TObjArray &tes, Float_t qmax)
Handling of IceCube event data.
Signal (Hit) handling of a generic IceCube Optical Module (GOM).
void SetSingleHit(Int_t ndoms, TString s, Int_t ndoms1=0)
void SetScatteringLength(Float_t lambda, TString s)
IceRecoBase(const char *name="IceRecoBase", const char *title="Base class for IceCube reconstruction tasks")
void SetSLChitUsage(Int_t flag, TString s)
void SetCleaned(Int_t flag, TString s)
void SetVgroupUsage(Int_t flag, TString s)
void SetMinAmods(Int_t nmin, TString s)
void SetMinMod(Int_t nmin, TString s)
void SetMaxMod(Int_t nmax, TString s)
void SetMaxHits(Int_t nmax, TString s)
void SetMinAhits(Int_t nmin, TString s)
virtual void FlipTrack(NcTrack *t) const
void SetFlipAngles(Float_t thetatrk, Float_t thetahits)
Handling of 3-vectors in various reference frames.
Double_t GetX(Int_t i, TString f, TString u="rad")
Double_t Dot(Nc3Vector &q)
void SetScalar(Double_t v0, Double_t dv0=0)
virtual Double_t GetOpeningAngle(Nc4Vector &q, TString u="rad")
void SetUserData(NcSignal *s)
NcSignal * GetUserData() const
void AddNamedSlot(TString s)
Int_t GetDeadValue(Int_t j=1) const
Signal (Hit) handling of a generic device.
NcSignal * GetHit(Int_t j) const
TObjArray * SortHits(TString name, Int_t mode=-1, TObjArray *hits=0, Int_t mcal=1, Int_t deadcheck=1, TObjArray *ordered=0)
Creation and investigation of a jet of particle tracks.
void SetReferencePoint(NcPosition &p)
NcPosition * GetReferencePoint()
Int_t GetNtracks(Int_t idmode=0, Int_t chmode=2, Int_t pcode=0)
NcTrack * GetTrack(Int_t i) const
Double_t GetDistance(NcPosition *p, Float_t scale=-1)
Double_t GetMomentum(Float_t scale=-1)
TObjArray * GetSignals(TString classname, Int_t par=0, TObjArray *signals=0)
Int_t GetNsignals(TString classname="TObject", Int_t par=0) const
Nc3Vector Get3Momentum(Float_t scale=-1) const
void AddTrack(NcTrack &t)
Base class for top level job in a task based procedure.
TObject * GetObject(const char *classname) const
Handling of positions (with timestamps) in various reference frames.
void GetPosition(Double_t *r, TString f, TString u="rad", Float_t s=-1) const
void SetPositionErrors(Double_t *e, TString f, TString u="rad")
void SetPosition(Double_t *r, TString f, TString u="rad")
NcTimestamp * GetTimestamp()
void SetTimestamp(NcTimestamp &t)
Sampling and statistics tools for various multi-dimensional data samples.
Double_t GetMinimum(Int_t i) const
Double_t GetSigma(Int_t i, Int_t model=0) const
Double_t GetMedian(Int_t i)
Double_t GetMean(Int_t i) const
void SetStoreMode(Int_t mode=1, Int_t nmax=0, Int_t i=0)
Double_t GetMaximum(Int_t i) const
Double_t GetSpread(Int_t i, Int_t model=0, Double_t vref=0)
Generic handling of (extrapolated) detector signals.
virtual void SetSignal(Double_t sig, Int_t j=1)
NcDevice * GetDevice() const
virtual Float_t GetSignal(Int_t j=1, Int_t mode=0) const
void AddTrack(NcTrack &t, Int_t mode=1)
Handling of timestamps for (astro)particle physics research.
void Add(Int_t d, Int_t s, Int_t ns, Int_t ps=0)
Handling of the attributes of a reconstructed particle track.
void SetCharge(Float_t q)
void SetReferencePoint(NcPosition &p)
NcSignal * GetSignal(Int_t j) const
Int_t GetNsignals() const
Double_t GetDistance(NcPosition *p, Float_t scale=-1)
void AddSignal(NcSignal &s, Int_t mode=0)
void Set3Momentum(Nc3Vector &p)
void SetFitDetails(TObject *obj)
NcPosition * GetReferencePoint()
Nc3Vector Get3Momentum(Float_t scale=-1) const
TObject * GetFitDetails()
void SetTimestamp(NcTimestamp &t)