204 NcJob* parent=(
NcJob*)(gROOT->GetListOfTasks()->FindObject(name.Data()));
216 if (seldev->
GetSignal(
"Select") < 0.1)
return;
222 fParams.SetNameTitle(
"IceLinefit",
"IceLinefit complete event reco parameters");
226 fParams.SetNameTitle(
"IceLinefit4Track",
"IceLinefit track based reco parameters");
240 cout <<
" *IceLinefit* First guess selections to be processed (-1=all)." << endl;
241 for (Int_t i=0; i<nclasses; i++)
245 str=strx->GetString();
247 cout <<
" Maximally " << ntkmax <<
" track(s) per event for procedure : " << str.Data() << endl;
281 TObjArray* aoms=
fEvt->GetDevices(
"IceAOM");
290 if (name==
"") name=ClassName();
292 TString title=ClassName();
293 title+=
" Amanda track";
294 trk->SetNameTitle(name.Data(),title.Data());
311 TObjArray* doms=
fEvt->GetDevices(
"IceIDOM");
320 if (name==
"") name=ClassName();
322 TString title=ClassName();
323 title+=
" InIce track";
324 trk->SetNameTitle(name.Data(),title.Data());
341 TObjArray* doms=
fEvt->GetDevices(
"IceICDOM");
350 if (name==
"") name=ClassName();
352 TString title=ClassName();
353 title+=
" Standard IceCube InIce track";
354 trk->SetNameTitle(name.Data(),title.Data());
371 TObjArray* doms=
fEvt->GetDevices(
"IceDCDOM");
380 if (name==
"") name=ClassName();
382 TString title=ClassName();
383 title+=
" DeepCore track";
384 trk->SetNameTitle(name.Data(),title.Data());
413 for (Int_t iclass=0; iclass<nclasses; iclass++)
417 str=strx->GetString();
419 TObjArray* tracks=
fEvt->GetTracks(str);
421 if (tracks) ntk=tracks->GetEntries();
422 if (ntkmax>0 && ntk>ntkmax) ntk=ntkmax;
426 for (Int_t i=0; i<ntk; i++)
428 mytracks.Add(tracks->At(i));
431 for (Int_t jtk=0; jtk<ntk; jtk++)
433 track=(
NcTrack*)mytracks.At(jtk);
434 if (!track)
continue;
437 trackname=track->GetName();
438 trackname.ReplaceAll(
"Ice",
"");
451 if (newname==
"") newname=ClassName();
454 trk->SetNameTitle(newname.Data(),
"Linefit reco for all assoc. hits");
472 if (maxhits<0)
return 0;
475 Int_t narr=arr->GetEntries();
476 if (narr<=0)
return 0;
482 for (Int_t iarr=0; iarr<narr; iarr++)
489 if (ngood<minmod || ngood>maxmod)
return 0;
492 const Float_t c=0.299792;
499 Float_t sumt=0,sumt2=0;
501 TObjArray* ordered=0;
507 for (Int_t iarr=0; iarr<narr; iarr++)
511 omx=(
IceGOM*)arr->At(iarr);
516 if (maxhits>0 && omx->
GetNhits()>maxhits)
518 if (omx->InheritsFrom(
"IceAOM")) ordered=omx->
SortHits(
"LE",1,0,7);
519 if (omx->InheritsFrom(
"IceDOM")) ordered=omx->
SortHits(
"ADC",-1,0,7);
531 for (Int_t ih=1; ih<=nhitloop; ih++)
535 if (nh>=maxhits)
break;
551 if (!omx || !sx)
continue;
554 if (!slc && sx->
GetSignal(
"SLC"))
continue;
570 Int_t nused=hits.GetEntries();
571 if (!nused || nused<minahits)
return 0;
573 Int_t nasmods=
fEvt->GetNdevices(
"IceGOM",&hits);
574 if (nasmods<minamods)
return 0;
585 Float_t dum=sumt2-(sumt*sumt);
590 fitstats.SetNameTitle(
"Fitstats",
"Fit stats for IceLinefit");
616 t0->
Add(0,0,(
int)sumt);
624 for (Int_t i=0; i<nused; i++)
Handling of IceCube event data.
Signal (Hit) handling of a generic IceCube Optical Module (GOM).
IceRecoBase derived TTask processor to perform linefit reconstruction.
virtual void Exec(Option_t *opt)
NcTrack * Reconstruct(TObjArray *doms, Int_t cln, Int_t minmod, Int_t maxmod, Int_t maxhits, Int_t minahits, Int_t minamods, Int_t slc)
IceLinefit(const char *name="IceLinefit", const char *title="Linefit reconstruction")
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 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.
void SetVector(Double_t *v, TString f, TString u="rad")
void GetVector(Double_t *v, TString f, TString u="rad") 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)
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 SetPosition(Double_t *r, TString f, TString u="rad")
NcTimestamp * GetTimestamp()
void SetTimestamp(NcTimestamp &t)
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 AddTrackHypothesis(NcTrack &t)
void SetReferencePoint(NcPosition &p)
void Set3Momentum(Nc3Vector &p)
void SetFitDetails(TObject *obj)
TObjArray * GetSignals(const char *classname, Int_t par=0, TObjArray *signals=0)
void SetHypCopy(Int_t flag)
void SetTimestamp(NcTimestamp &t)