NCFS-Pack
A generic (astro)particle physics analysis framework
 
Loading...
Searching...
No Matches
IceRecoBase.cxx
Go to the documentation of this file.
1
17
19
63
64#include "IceRecoBase.h"
65#include "Riostream.h"
66
67ClassImp(IceRecoBase); // Class implementation to enable ROOT I/O
68
70IceRecoBase::IceRecoBase(const char* name,const char* title) : TTask(name,title)
71{
77
78 fFirst=1;
79 fEvt=0;
80 fCleanA=0;
81 fMaxmodA=999999;
82 fMinmodA=0;
83 fMaxhitsA=0;
84 fSingleA=0;
85 fMinahitsA=0;
86 fMinamodsA=0;
87 fCleanI=0;
88 fMaxmodI=999999;
89 fMinmodI=0;
90 fMaxhitsI=0;
91 fSingleI=0;
92 fMinahitsI=0;
93 fMinamodsI=0;
94 fCleanIC=0;
95 fMaxmodIC=999999;
96 fMinmodIC=0;
97 fMaxhitsIC=0;
98 fSingleIC=0;
100 fMinamodsIC=0;
101 fCleanDC=0;
102 fMaxmodDC=999999;
103 fMinmodDC=0;
104 fMaxhitsDC=0;
105 fSingleDC=0;
106 fMinahitsDC=0;
107 fMinamodsDC=0;
108 fSlcI=1;
109 fSlcIC=1;
110 fSlcDC=1;
111 fThetatrk=-999;
112 fThetahits=999;
113 fLambdaA=33.3;
114 fLambdaUD=30;
115 fLambdaDL=5;
116 fLambdaLD=40;
117 fLabsA=50;
118 fLabsUD=100;
119 fLabsDL=10;
120 fLabsLD=150;
121 fTsigmaA=10;
122 fTsigmaIC=5;
123 fTsigmaDC=5;
124 fTrackname="";
125 fCharge=0;
126 fUseNames=0;
127 fUseNtk=0;
128}
129
131{
137
138 if (fUseNames)
139 {
140 delete fUseNames;
141 fUseNames=0;
142 }
143 if (fUseNtk)
144 {
145 delete fUseNtk;
146 fUseNtk=0;
147 }
148}
149
150void IceRecoBase::SetCleaned(Int_t flag,TString s)
151{
169
170 if (s=="A")
171 {
172 fCleanA=flag;
173 fParams.AddNamedSlot("CleanA");
174 fParams.SetSignal(fCleanA,"CleanA");
175 }
176 if (s=="I")
177 {
178 fCleanI=flag;
179 fParams.AddNamedSlot("CleanI");
180 fParams.SetSignal(fCleanI,"CleanI");
181 }
182 if (s=="IC")
183 {
184 fCleanIC=flag;
185 fParams.AddNamedSlot("CleanIC");
186 fParams.SetSignal(fCleanIC,"CleanIC");
187 }
188 if (s=="DC")
189 {
190 fCleanDC=flag;
191 fParams.AddNamedSlot("CleanDC");
192 fParams.SetSignal(fCleanDC,"CleanDC");
193 }
194}
195
196void IceRecoBase::SetMaxMod(Int_t nmax,TString s)
197{
217
218 if (s=="A")
219 {
220 fMaxmodA=nmax;
221 fParams.AddNamedSlot("MaxmodA");
222 fParams.SetSignal(fMaxmodA,"MaxmodA");
223 }
224 if (s=="I")
225 {
226 fMaxmodI=nmax;
227 fParams.AddNamedSlot("MaxmodI");
228 fParams.SetSignal(fMaxmodI,"MaxmodI");
229 }
230 if (s=="IC")
231 {
232 fMaxmodIC=nmax;
233 fParams.AddNamedSlot("MaxmodIC");
234 fParams.SetSignal(fMaxmodIC,"MaxmodIC");
235 }
236 if (s=="DC")
237 {
238 fMaxmodDC=nmax;
239 fParams.AddNamedSlot("MaxmodDC");
240 fParams.SetSignal(fMaxmodDC,"MaxmodDC");
241 }
242}
243
244void IceRecoBase::SetMinMod(Int_t nmin,TString s)
245{
262
263 if (s=="A")
264 {
265 fMinmodA=nmin;
266 fParams.AddNamedSlot("MinmodA");
267 fParams.SetSignal(fMinmodA,"MinmodA");
268 }
269 if (s=="I")
270 {
271 fMinmodI=nmin;
272 fParams.AddNamedSlot("MinmodI");
273 fParams.SetSignal(fMinmodI,"MinmodI");
274 }
275 if (s=="IC")
276 {
277 fMinmodIC=nmin;
278 fParams.AddNamedSlot("MinmodIC");
279 fParams.SetSignal(fMinmodIC,"MinmodIC");
280 }
281 if (s=="DC")
282 {
283 fMinmodDC=nmin;
284 fParams.AddNamedSlot("MinmodDC");
285 fParams.SetSignal(fMinmodDC,"MinmodDC");
286 }
287}
288
289void IceRecoBase::SetMaxHits(Int_t nmax,TString s)
290{
313
314 if (s=="A")
315 {
316 fMaxhitsA=nmax;
317 fParams.AddNamedSlot("MaxhitsA");
318 fParams.SetSignal(fMaxhitsA,"MaxhitsA");
319 }
320 if (s=="I")
321 {
322 fMaxhitsI=nmax;
323 fParams.AddNamedSlot("MaxhitsI");
324 fParams.SetSignal(fMaxhitsI,"MaxhitsI");
325 }
326 if (s=="IC")
327 {
328 fMaxhitsIC=nmax;
329 fParams.AddNamedSlot("MaxhitsIC");
330 fParams.SetSignal(fMaxhitsIC,"MaxhitsIC");
331 }
332 if (s=="DC")
333 {
334 fMaxhitsDC=nmax;
335 fParams.AddNamedSlot("MaxhitsDC");
336 fParams.SetSignal(fMaxhitsDC,"MaxhitsDC");
337 }
338}
339
340void IceRecoBase::SetSingleHit(Int_t ndoms,TString s,Int_t ndoms1)
341{
365
366 if (s=="A")
367 {
368 if (ndoms>=0)
369 {
370 fSingleA=ndoms;
371 fParams.AddNamedSlot("SingleA");
372 fParams.SetSignal(fSingleA,"SingleA");
373 }
374 if (ndoms1>=0)
375 {
376 fSingle1A=ndoms1;
377 fParams.AddNamedSlot("Single1A");
378 fParams.SetSignal(fSingle1A,"Single1A");
379 }
380 }
381 if (s=="IC")
382 {
383 if (ndoms>=0)
384 {
385 fSingleIC=ndoms;
386 fParams.AddNamedSlot("SingleIC");
387 fParams.SetSignal(fSingleIC,"SingleIC");
388 }
389 if (ndoms1>=0)
390 {
391 fSingle1IC=ndoms1;
392 fParams.AddNamedSlot("Single1IC");
393 fParams.SetSignal(fSingle1IC,"Single1IC");
394 }
395 }
396 if (s=="DC")
397 {
398 if (ndoms>=0)
399 {
400 fSingleDC=ndoms;
401 fParams.AddNamedSlot("SingleDC");
402 fParams.SetSignal(fSingleDC,"SingleDC");
403 }
404 if (ndoms1>=0)
405 {
406 fSingle1DC=ndoms1;
407 fParams.AddNamedSlot("Single1DC");
408 fParams.SetSignal(fSingle1DC,"Single1DC");
409 }
410 }
411 if (s=="I")
412 {
413 if (ndoms>=0)
414 {
415 fSingleI=ndoms;
416 fParams.AddNamedSlot("SingleI");
417 fParams.SetSignal(fSingleI,"SingleI");
418 }
419 if (ndoms1>=0)
420 {
421 fSingle1I=ndoms1;
422 fParams.AddNamedSlot("Single1I");
423 fParams.SetSignal(fSingle1I,"Single1I");
424 }
425 }
426}
427
428void IceRecoBase::SetMinAhits(Int_t nmin,TString s)
429{
445
446 if (s=="A")
447 {
448 fMinahitsA=nmin;
449 fParams.AddNamedSlot("MinahitsA");
450 fParams.SetSignal(fMinahitsA,"MinahitsA");
451 }
452 if (s=="I")
453 {
454 fMinahitsI=nmin;
455 fParams.AddNamedSlot("MinahitsI");
456 fParams.SetSignal(fMinahitsI,"MinahitsI");
457 }
458 if (s=="IC")
459 {
460 fMinahitsIC=nmin;
461 fParams.AddNamedSlot("MinahitsIC");
462 fParams.SetSignal(fMinahitsIC,"MinahitsIC");
463 }
464 if (s=="DC")
465 {
466 fMinahitsDC=nmin;
467 fParams.AddNamedSlot("MinahitsDC");
468 fParams.SetSignal(fMinahitsDC,"MinahitsDC");
469 }
470}
471
472void IceRecoBase::SetMinAmods(Int_t nmin,TString s)
473{
489
490 if (s=="A")
491 {
492 fMinamodsA=nmin;
493 fParams.AddNamedSlot("MinamodsA");
494 fParams.SetSignal(fMinamodsA,"MinamodsA");
495 }
496 if (s=="I")
497 {
498 fMinamodsI=nmin;
499 fParams.AddNamedSlot("MinamodsI");
500 fParams.SetSignal(fMinamodsI,"MinamodsI");
501 }
502 if (s=="IC")
503 {
504 fMinamodsIC=nmin;
505 fParams.AddNamedSlot("MinamodsIC");
506 fParams.SetSignal(fMinamodsIC,"MinamodsIC");
507 }
508 if (s=="DC")
509 {
510 fMinamodsDC=nmin;
511 fParams.AddNamedSlot("MinamodsDC");
512 fParams.SetSignal(fMinamodsDC,"MinamodsDC");
513 }
514}
515
516void IceRecoBase::SetSLChitUsage(Int_t flag,TString s)
517{
534
535 if (s=="I")
536 {
537 fSlcI=flag;
538 fParams.AddNamedSlot("SlcI");
539 fParams.SetSignal(fSlcI,"SlcI");
540 }
541 if (s=="IC")
542 {
543 fSlcIC=flag;
544 fParams.AddNamedSlot("SlcIC");
545 fParams.SetSignal(fSlcIC,"SlcIC");
546 }
547 if (s=="DC")
548 {
549 fSlcDC=flag;
550 fParams.AddNamedSlot("SlcDC");
551 fParams.SetSignal(fSlcDC,"SlcDC");
552 }
553}
554
555void IceRecoBase::SetFlipAngles(Float_t thetatrk,Float_t thetahits)
556{
576
577 fThetatrk=thetatrk;
578 fThetahits=thetahits;
579
580 fParams.AddNamedSlot("Thetatrk");
581 fParams.AddNamedSlot("Thetahits");
582 fParams.SetSignal(fThetatrk,"Thetatrk");
583 fParams.SetSignal(fThetahits,"Thetahits");
584}
585
586void IceRecoBase::SetScatteringLength(Float_t lambda,TString s)
587{
601
602 if (s=="A")
603 {
604 fLambdaA=lambda;
605 fParams.AddNamedSlot("LambdaA");
606 fParams.SetSignal(fLambdaA,"LambdaA");
607 }
608 if (s=="UD")
609 {
610 fLambdaUD=lambda;
611 fParams.AddNamedSlot("LambdaUD");
612 fParams.SetSignal(fLambdaUD,"LambdaUD");
613 }
614 if (s=="DL")
615 {
616 fLambdaDL=lambda;
617 fParams.AddNamedSlot("LambdaDL");
618 fParams.SetSignal(fLambdaDL,"LambdaDL");
619 }
620 if (s=="LD")
621 {
622 fLambdaLD=lambda;
623 fParams.AddNamedSlot("LambdaLD");
624 fParams.SetSignal(fLambdaLD,"LambdaLD");
625 }
626}
627
628void IceRecoBase::SetAbsorptionLength(Float_t lambda,TString s)
629{
643
644 if (s=="A")
645 {
646 fLabsA=lambda;
647 fParams.AddNamedSlot("LabsA");
648 fParams.SetSignal(fLabsA,"LabsA");
649 }
650 if (s=="UD")
651 {
652 fLabsUD=lambda;
653 fParams.AddNamedSlot("LabsUD");
654 fParams.SetSignal(fLabsUD,"LabsUD");
655 }
656 if (s=="DL")
657 {
658 fLabsDL=lambda;
659 fParams.AddNamedSlot("LabsDL");
660 fParams.SetSignal(fLabsDL,"LabsDL");
661 }
662 if (s=="LD")
663 {
664 fLabsLD=lambda;
665 fParams.AddNamedSlot("LabsLD");
666 fParams.SetSignal(fLabsLD,"LabsLD");
667 }
668}
669
670void IceRecoBase::SetTimeJitter(Float_t sigma,TString s)
671{
684
685 if (s=="A")
686 {
687 fTsigmaA=sigma;
688 fParams.AddNamedSlot("TsigmaA");
689 fParams.SetSignal(fTsigmaA,"TsigmaA");
690 }
691 if (s=="IC")
692 {
693 fTsigmaIC=sigma;
694 fParams.AddNamedSlot("TsigmaIC");
695 fParams.SetSignal(fTsigmaIC,"TsigmaIC");
696 }
697 if (s=="DC")
698 {
699 fTsigmaDC=sigma;
700 fParams.AddNamedSlot("TsigmaDC");
701 fParams.SetSignal(fTsigmaDC,"TsigmaDC");
702 }
703}
704
705void IceRecoBase::SetVgroupUsage(Int_t flag,TString s)
706{
725
726 if (s=="A")
727 {
728 fVgroupA=flag;
729 fParams.AddNamedSlot("VgroupA");
730 fParams.SetSignal(fVgroupA,"VgroupA");
731 }
732 if (s=="IC")
733 {
734 fVgroupIC=flag;
735 fParams.AddNamedSlot("VgroupIC");
736 fParams.SetSignal(fVgroupIC,"VgroupIC");
737 }
738 if (s=="DC")
739 {
740 fVgroupDC=flag;
741 fParams.AddNamedSlot("VgroupDC");
742 fParams.SetSignal(fVgroupDC,"VgroupDC");
743 }
744 if (s=="I")
745 {
746 fVgroupI=flag;
747 fParams.AddNamedSlot("VgroupI");
748 fParams.SetSignal(fVgroupI,"VgroupI");
749 }
750}
751
753{
763
764 fTrackname=s;
765
766 fParams.AddNamedSlot(fTrackname);
767 fParams.SetSignal(1,fTrackname);
768}
769
770void IceRecoBase::SetCharge(Float_t charge)
771{
780
781 fCharge=charge;
782}
783
784void IceRecoBase::UseTracks(TString classname,Int_t n)
785{
810
811 if (!fUseNames)
812 {
813 fUseNames=new TObjArray();
814 fUseNames->SetOwner();
815 }
816
817 if (!fUseNtk) fUseNtk=new TArrayI();
818
819 // Check if this classname has already been specified before
820 TString s;
821 Int_t nen=fUseNames->GetEntries();
822 for (Int_t i=0; i<nen; i++)
823 {
824 TObjString* sx=(TObjString*)fUseNames->At(i);
825 if (!sx) continue;
826 s=sx->GetString();
827 if (s==classname) return;
828 }
829
830 // New classname to be added into the storage
831 if (nen >= fUseNames->GetSize()) fUseNames->Expand(nen+1);
832 if (nen >= fUseNtk->GetSize()) fUseNtk->Set(nen+1);
833
834 TObjString* name=new TObjString();
835 name->SetString(classname);
836 fUseNames->Add(name);
837 fUseNtk->AddAt(n,nen);
838
839 fParams.AddNamedSlot("UseTracks");
840 fParams.SetSignal(1,"UseTracks");
841}
842
843void IceRecoBase::Exec(Option_t* opt)
844{
848// Template for the implementation of a reconstruction processor. //
850~~~
851**/
852
853 // Obtain a pointer to the parent NcJob of this reconstruction task
854 TString name=opt;
855 NcJob* parent=(NcJob*)(gROOT->GetListOfTasks()->FindObject(name.Data()));
856
857 if (!parent) return;
858
859 // Obtain a pointer to the IceCube event data structure
860 fEvt=(IceEvent*)parent->GetObject("IceEvent");
861 if (!fEvt) return;
862
863 // Only process accepted events
864 NcDevice* seldev=(NcDevice*)fEvt->GetDevice("NcEventSelector");
865 if (seldev)
866 {
867 if (seldev->GetSignal("Select") < 0.1) return;
868 }
869
870 // Provide a name for the fParams device in the event
871 if (!fUseNames) // Reconstruction procedure on complete event
872 {
873 fParams.SetNameTitle("IceRecoBase","IceRecoBase complete event reco parameters");
874 }
875 else // Reconstruction procedure on track associated data
876 {
877 fParams.SetNameTitle("IceRecoBase4Track","IceRecoBase track based reco parameters");
878 }
879
880 // Add the fParams device to the IceEvent structure
881 fEvt->AddDevice(fParams);
882
883 // Printout information on used tracks (if any) at first startup of the processor task
884 if (fUseNames && fFirst)
885 {
886 Int_t nclasses=0;
887 if (fUseNames) nclasses=fUseNames->GetEntries(); // Number of first guess classes to be processed
888 Int_t ntkmax=0; // Max. number of tracks for a certain class
889 TObjString* strx=0;
890 TString str;
891 cout << " *IceRecoBase* First guess selections to be processed (-1=all)." << endl;
892 for (Int_t i=0; i<nclasses; i++)
893 {
894 strx=(TObjString*)fUseNames->At(i);
895 if (!strx) continue;
896 str=strx->GetString();
897 ntkmax=fUseNtk->At(i);
898 cout << " Maximally " << ntkmax << " track(s) per event for procedure : " << str.Data() << endl;
899 }
900 cout << endl;
901
902 fFirst=0;
903 }
904
906 // Enter here your code for the actual reconstruction process. //
908
909}
910
912{
929
930 if (!t || fThetatrk<0 || fThetahits>180) return;
931
932 Nc3Vector p;
933 Float_t theta=0;
934 p=t->Get3Momentum();
935 theta=p.GetX(2,"sph","deg");
936
937 if (theta>=fThetatrk) return;
938
939 // Check the HitPath of the time ordered hits associated to this track
940 TObjArray* hits=t->GetSignals("IceGOM",1);
941 if (!hits) return;
942 NcDevice sorter;
943 TObjArray* sorted=sorter.SortHits("LE",1,hits,7);
944 if (!sorted) return;
945
946 // Make sure that the starting hit is an HLC hit
947 for (Int_t i=0; i<sorted->GetEntries(); i++)
948 {
949 NcSignal* sx=(NcSignal*)sorted->At(i);
950 if (!sx) continue;
951
952 // For Amanda the concept of HLC and SLC hits didn't exist
953 NcDevice* omx=sx->GetDevice();
954 if (!omx) continue;
955 if (omx->InheritsFrom("IceAOM")) continue;
956
957 if (sx->GetSignal("SLC")<0.5) break;
958 sorted->Remove(sx);
959 }
960 sorted->Compress();
961
962 Nc3Vector hitpath;
963 hitpath=fEvt->GetHitPath(sorted,1);
964 theta=hitpath.GetX(2,"sph","deg");
965
966 if (theta<=fThetahits) return;
967
968 // Flip the track direction
969 p*=-1.;
970 t->Set3Momentum(p);
971 NcSignal* fitstats=(NcSignal*)t->GetFitDetails();
972 if (fitstats)
973 {
974 fitstats->AddNamedSlot("TrackFlip");
975 fitstats->SetSignal(1,"TrackFlip");
976 }
977}
978
ClassImp(IceRecoBase)
Handling of IceCube event data.
Definition IceEvent.h:20
TTask derived base class for the various IceCube reconstruction tasks.
Definition IceRecoBase.h:19
Float_t fLambdaLD
Definition IceRecoBase.h:84
Int_t fMinahitsI
Definition IceRecoBase.h:69
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")
Int_t fMinamodsI
Definition IceRecoBase.h:73
void SetSLChitUsage(Int_t flag, TString s)
Float_t fThetahits
Definition IceRecoBase.h:80
void SetCleaned(Int_t flag, TString s)
Float_t fThetatrk
Definition IceRecoBase.h:79
Int_t fMinahitsIC
Definition IceRecoBase.h:70
Int_t fMinamodsA
Definition IceRecoBase.h:72
void SetAbsorptionLength(Float_t lambda, TString s)
void SetVgroupUsage(Int_t flag, TString s)
Int_t fSingleIC
Definition IceRecoBase.h:61
Int_t fCleanI
Definition IceRecoBase.h:45
virtual ~IceRecoBase()
virtual void Exec(Option_t *opt)
Int_t fCleanIC
Definition IceRecoBase.h:46
Int_t fMinahitsDC
Definition IceRecoBase.h:71
Int_t fVgroupI
Definition IceRecoBase.h:93
Float_t fLabsA
Definition IceRecoBase.h:85
void SetCharge(Float_t charge)
Int_t fVgroupDC
Definition IceRecoBase.h:95
void SetMinAmods(Int_t nmin, TString s)
Int_t fMaxmodA
Definition IceRecoBase.h:48
TArrayI * fUseNtk
Definition IceRecoBase.h:99
void UseTracks(TString classname, Int_t n=-1)
Int_t fCleanDC
Definition IceRecoBase.h:47
Float_t fLabsLD
Definition IceRecoBase.h:88
Int_t fSingle1I
Definition IceRecoBase.h:66
Int_t fSingleDC
Definition IceRecoBase.h:63
Float_t fLabsUD
Definition IceRecoBase.h:86
Float_t fLambdaDL
Definition IceRecoBase.h:83
Int_t fSingleI
Definition IceRecoBase.h:62
Int_t fMinmodDC
Definition IceRecoBase.h:55
Int_t fSingle1DC
Definition IceRecoBase.h:67
void SetMinMod(Int_t nmin, TString s)
Int_t fCleanA
Definition IceRecoBase.h:44
Int_t fMaxmodIC
Definition IceRecoBase.h:50
Int_t fMaxhitsDC
Definition IceRecoBase.h:59
Int_t fMinmodI
Definition IceRecoBase.h:53
void SetMaxMod(Int_t nmax, TString s)
Float_t fTsigmaIC
Definition IceRecoBase.h:90
Int_t fMaxmodI
Definition IceRecoBase.h:49
Int_t fMaxhitsIC
Definition IceRecoBase.h:58
void SetMaxHits(Int_t nmax, TString s)
TString fTrackname
Definition IceRecoBase.h:96
NcDevice fParams
Float_t fCharge
Definition IceRecoBase.h:97
Int_t fSingle1A
Definition IceRecoBase.h:64
void SetMinAhits(Int_t nmin, TString s)
Int_t fMaxmodDC
Definition IceRecoBase.h:51
Int_t fVgroupA
Definition IceRecoBase.h:92
Int_t fMinamodsIC
Definition IceRecoBase.h:74
Float_t fTsigmaDC
Definition IceRecoBase.h:91
virtual void FlipTrack(NcTrack *t) const
Float_t fLabsDL
Definition IceRecoBase.h:87
Float_t fLambdaA
Definition IceRecoBase.h:81
Int_t fSingleA
Definition IceRecoBase.h:60
Float_t fTsigmaA
Definition IceRecoBase.h:89
void SetFlipAngles(Float_t thetatrk, Float_t thetahits)
void SetTrackName(TString s)
Int_t fMinmodIC
Definition IceRecoBase.h:54
Int_t fSingle1IC
Definition IceRecoBase.h:65
Int_t fVgroupIC
Definition IceRecoBase.h:94
Int_t fMaxhitsA
Definition IceRecoBase.h:56
Int_t fMinamodsDC
Definition IceRecoBase.h:75
TObjArray * fUseNames
Definition IceRecoBase.h:98
Int_t fMinahitsA
Definition IceRecoBase.h:68
Int_t fMaxhitsI
Definition IceRecoBase.h:57
IceEvent * fEvt
Definition IceRecoBase.h:43
Float_t fLambdaUD
Definition IceRecoBase.h:82
void SetTimeJitter(Float_t sigma, TString s)
Int_t fMinmodA
Definition IceRecoBase.h:52
Handling of 3-vectors in various reference frames.
Definition Nc3Vector.h:15
Double_t GetX(Int_t i, TString f, TString u="rad")
void AddNamedSlot(TString s)
Signal (Hit) handling of a generic device.
Definition NcDevice.h:14
TObjArray * SortHits(TString name, Int_t mode=-1, TObjArray *hits=0, Int_t mcal=1, Int_t deadcheck=1, TObjArray *ordered=0)
Definition NcDevice.cxx:984
Base class for top level job in a task based procedure.
Definition NcJob.h:18
TObject * GetObject(const char *classname) const
Definition NcJob.cxx:456
Generic handling of (extrapolated) detector signals.
Definition NcSignal.h:23
virtual void SetSignal(Double_t sig, Int_t j=1)
Definition NcSignal.cxx:516
NcDevice * GetDevice() const
virtual Float_t GetSignal(Int_t j=1, Int_t mode=0) const
Definition NcSignal.cxx:651
Handling of the attributes of a reconstructed particle track.
Definition NcTrack.h:19
void Set3Momentum(Nc3Vector &p)
Definition NcTrack.cxx:401
Nc3Vector Get3Momentum(Float_t scale=-1) const
Definition NcTrack.cxx:652
TObject * GetFitDetails()
Definition NcTrack.cxx:1962
TObjArray * GetSignals(const char *classname, Int_t par=0, TObjArray *signals=0)
Definition NcTrack.cxx:1046