10#include "CutCollection.h"
13#include "CutMonitor.h"
14#include "CutMonitorX.h"
15#include "CutMonitorXY.h"
16#include "CutMonitorXYZ.h"
25#include "TwoTrackCut.h"
28#include <TCollection.h>
48 fContainerSize(cont_size),
50 fCutContainerArr(NULL)
52 fCutContainerArr = container;
53 fCutMonitors =
new TObjArray();
54 fCuts =
new TObjArray();
55 fFastCuts =
new TObjArray();
58 fCollectionID = collectionNo;
68 Bool_t keepDouble = Hal::Std::FindParam(option,
"double");
69 if (!Hal::Std::FindParam(option,
"fast")) {
70 for (
int i = 0; i < fCuts->GetEntriesFast(); i++) {
71 if (cut->
CutName() == ((
Cut*) fCuts->UncheckedAt(i))->CutName()) {
73 Form(
"Cut used %s in collection no %i, cut will be removed", cut->
CutName().Data(), cut->
GetCollectionID()),
78 for (
int i = 0; i < fFastCuts->GetEntriesFast(); i++) {
79 if (cut->
CutName() == ((
Cut*) fFastCuts->UncheckedAt(i))->CutName()) {
81 Cout::PrintInfo(Form(
"Cut used %s in collection no %i in fast cuts group, cut will "
93 for (
int i = 0; i < fFastCuts->GetEntriesFast(); i++) {
94 if (cut->
CutName() == ((
Cut*) fFastCuts->UncheckedAt(i))->CutName()) {
95 Cout::PrintInfo(Form(
"Cut used %s in collection no %i in as fast, cut will be "
104 for (
int i = 0; i < fCuts->GetEntriesFast(); i++) {
105 if (cut->
CutName() == ((
Cut*) fCuts->UncheckedAt(i))->CutName()) {
107 Form(
"Cut used %s in collection no %i but cut will be removed", cut->
CutName().Data(), cut->
GetCollectionID()),
113 fFastCuts->AddLast(cut);
117 Bool_t CutCollection::CheckIfComptatiblie(
Cut* cut1,
Cut* cut2) {
118 if (cut1 == NULL || cut2 == NULL)
return kFALSE;
126 if (monitor == NULL) {
131 for (
int i = 0; i < fCutMonitors->GetEntriesFast(); i++) {
132 if (monitor == (
CutMonitor*) fCutMonitors->UncheckedAt(i)) {
137 fCutMonitors->AddLast(monitor);
140 void CutCollection::Update(Bool_t val, TObject* obj) {
146 for (
int i = 0; i < fCutMonitorsNo; i++)
147 ((CutMonitor*) fCutMonitors->UncheckedAt(i))->Update(val, obj);
160 for (
int i = 0; i < fCuts->GetEntriesFast(); i++) {
161 Bool_t ok = ((
Cut*) fCuts->UncheckedAt(i))->Init(task_id);
165 Form(
"Failed to init %s in cut collection %i", ((
Cut*) fCuts->UncheckedAt(i))->CutName().Data(),
GetCollectionID()),
174 ((
Cut*) fCuts->UncheckedAt(i))->CutName().Data(),
180 for (
int i = 0; i < fFastCuts->GetEntriesFast(); i++) {
181 Bool_t ok = ((
Cut*) fFastCuts->UncheckedAt(i))->Init(task_id);
185 ((
Cut*) fFastCuts->UncheckedAt(i))->CutName().Data(),
189 fFastCuts->RemoveAt(i);
190 fFastCuts->Compress();
195 ((
Cut*) fFastCuts->UncheckedAt(i))->CutName().Data(),
204 AdvancedMonitorInitialization(task_id);
206 if (fNext.GetSize() == 0) {
211 if (fPrev.GetSize() == 0) {
217 fFastCutsNo = fFastCuts->GetEntriesFast();
218 fSlowCutsNo = fCuts->GetEntriesFast();
219 fCutMonitorsNo = fCutMonitors->GetEntriesFast();
223 for (
int i = 0; i < input->
GetCutNo(); i++) {
224 if (adreess == input->
GetCut(i))
return i;
234 fPrevBckg.AddAddr(value);
236 fPrev.AddAddr(value);
243 fNextBckg.AddAddr(value);
245 fNext.AddAddr(value);
253 for (
int i = 0; i < fCuts->GetEntriesFast(); i++) {
254 TString name2 = ((
Cut*) fCuts->UncheckedAt(i))->CutName();
256 return (
Cut*) fCuts->UncheckedAt(i);
265 if (fInit == kTRUE) {
266 Cout::PrintInfo(
"Cant replicate initialized CutCollection - this lead "
267 "to mess with cut monitors !",
271 clone->fStep = this->fStep;
272 for (
int i = 0; i < this->fCuts->GetEntriesFast(); i++) {
277 for (
int i = 0; i < fFastCuts->GetEntriesFast(); i++) {
280 clone->fFastCuts->AddLast(cut);
282 for (
int i = 0; i < this->fCutMonitors->GetEntriesFast(); i++) {
283 TString orig = fCutMonitors->UncheckedAt(i)->ClassName();
284 if (orig ==
"Hal::CutMonitorX") {
287 }
else if (orig ==
"Hal::CutMonitorXY") {
290 }
else if (orig ==
"Hal::CutMonitorXYZ") {
297 clone->fCutMonitorsNo = fCutMonitorsNo;
298 clone->fFastCutsNo = fFastCutsNo;
299 clone->fSlowCutsNo = fSlowCutsNo;
303 void CutCollection::AdvancedMonitorInitialization(Int_t task_id) {
305 Int_t oryginal_monitors_no = fCutMonitors->GetEntries();
307 if (fPrev.IsUsed()) prev_size = fPrev.GetSize();
308 for (
int i = 0; i < oryginal_monitors_no; i++) {
311 Bool_t init = cutmon->
Init(task_id);
312 if (init == kFALSE) {
313 Cout::PrintInfo(Form(
"Problem with initalization [%s]", cutmon->ClassName()), EInfo::kLowWarning);
314 fCutMonitors->RemoveAt(i);
318 TString monName = cutmon->ClassName();
319 if (monName ==
"Hal::CutMonitorX") {
321 Cut* newCut = this->
FindCut(cut);
324 Cout::PrintInfo(Form(
"Problem with initalization CutMonitorXY [%s]", newCut->ClassName()), EInfo::kLowWarning);
326 Form(
"Cut %s has only %i not %i parameters", newCut->ClassName(), newCut->GetCutSize(), cutmon->
GetCutParameter(0)),
328 fCutMonitors->RemoveAt(i);
333 Cout::PrintInfo(Form(
"Hal::CutMonitorX [%s] not found!", cut.Data()), EInfo::kError);
334 fCutMonitors->RemoveAt(i);
336 }
else if (monName ==
"Hal::CutMonitorXY") {
339 TObjArray* Ncut1 = LocateCuts(cut1_name);
340 TObjArray* Ncut2 = LocateCuts(cut2_name);
342 if (Ncut1->GetEntries() == 0 || Ncut2->GetEntries() == 0) {
343 Cout::PrintInfo(Form(
"Problem with initalization CutMonitorXY [%s] vs [%s]", cut1_name.Data(), cut2_name.Data()),
345 if (Ncut1->GetEntries() == 0) {
Cout::PrintInfo(Form(
"Cut %s not found", cut1_name.Data()), EInfo::kLowWarning); }
346 if (Ncut2->GetEntries() == 0) {
Cout::PrintInfo(Form(
"Cut %s not found", cut2_name.Data()), EInfo::kLowWarning); }
347 fCutMonitors->RemoveAt(i);
348 }
else if (Ncut1->GetEntriesFast() > 1 || Ncut2->GetEntriesFast() > 1 || prev_size > 1) {
350 Form(
"There is too many links or cuts cut monitor %s %s will be removed", cut1_name.Data(), cut2_name.Data()),
352 fCutMonitors->RemoveAt(i);
354 Cut* cut1 = (Cut*) Ncut1->UncheckedAt(0);
355 Cut* cut2 = (Cut*) Ncut2->UncheckedAt(0);
357 Cout::PrintInfo(Form(
"Problem with initalization CutMonitorXY [%s] vs [%s]", cut1_name.Data(), cut2_name.Data()),
360 Form(
"Cut %s has only %i not %i parameters", cut1->ClassName(), cut1->GetCutSize(), cutmon->
GetCutParameter(0)),
362 fCutMonitors->RemoveAt(i);
364 Cout::PrintInfo(Form(
"Problem with initalization CutMonitorXY [%s] vs [%s]", cut1_name.Data(), cut2_name.Data()),
367 Form(
"Cut %s has only %i not %i parameters", cut1->ClassName(), cut1->GetCutSize(), cutmon->
GetCutParameter(1)),
369 fCutMonitors->RemoveAt(i);
375 Ncut1->SetOwner(kFALSE);
376 Ncut2->SetOwner(kFALSE);
379 }
else if (monName ==
"Hal::CutMonitorXYZ") {
383 TObjArray* Ncut1 = LocateCuts(cut1_name);
384 TObjArray* Ncut2 = LocateCuts(cut2_name);
385 TObjArray* Ncut3 = LocateCuts(cut3_name);
386 if (Ncut1->GetEntries() == 0 || Ncut2->GetEntries() == 0 || Ncut3->GetEntries() == 0) {
388 Form(
" Problem with Hal::CutMonitorXYZ [%s] vs [%s] vs [%s]", cut1_name.Data(), cut2_name.Data(), cut3_name.Data()),
390 if (Ncut1->GetEntries() == 0)
Cout::PrintInfo(Form(
"Cut %s not found", cut1_name.Data()), EInfo::kLowWarning);
391 if (Ncut2->GetEntries() == 0)
Cout::PrintInfo(Form(
"Cut %s not found", cut2_name.Data()), EInfo::kLowWarning);
392 if (Ncut3->GetEntries() == 0)
Cout::PrintInfo(Form(
"Cut %s not found", cut3_name.Data()), EInfo::kLowWarning);
393 fCutMonitors->RemoveAt(i);
394 }
else if (Ncut1->GetEntries() > 1 || Ncut2->GetEntries() > 1 || Ncut3->GetEntriesFast() > 1 || prev_size > 1) {
395 Cout::PrintInfo(
"There is too many links or cuts monitor %s %s will be removed", EInfo::kError);
396 fCutMonitors->RemoveAt(i);
398 Cut* cut1 = (Cut*) Ncut1->UncheckedAt(0);
399 Cut* cut2 = (Cut*) Ncut2->UncheckedAt(0);
400 Cut* cut3 = (Cut*) Ncut3->UncheckedAt(0);
402 ECutUpdate upd = fMode;
403 if (fMode == ECutUpdate::kTwoTrackBackground) { upd = ECutUpdate::kTwoTrack; }
404 if (cut1->GetUpdateRatio() == upd) own_cuts = 1;
405 if (cut2->GetUpdateRatio() == upd) own_cuts += 2;
406 if (cut3->GetUpdateRatio() == upd) own_cuts += 4;
411 "container that own it",
413 fCutMonitors->RemoveAt(i);
417 if (CheckIfComptatiblie(cut2, cut3)) {
421 Cout::PrintInfo(
"Couldn't find compatible cuts for monitoring", EInfo::kLowWarning);
422 fCutMonitors->RemoveAt(i);
427 if (CheckIfComptatiblie(cut1, cut3)) {
431 Cout::PrintInfo(
"Couldn't find compatible cuts for monitoring", EInfo::kLowWarning);
432 fCutMonitors->RemoveAt(i);
437 if (CheckIfComptatiblie(cut1, cut2)) {
441 Cout::PrintInfo(
"Couldn't find compatible cuts for monitoring", EInfo::kLowWarning);
442 fCutMonitors->RemoveAt(i);
447 Cout::PrintInfo(Form(
"Problem with initalization Hal::CutMonitorXY [%s] vs [%s] vs "
454 Form(
"Cut %s has only %i not %i parameters", cut1->ClassName(), cut1->GetCutSize(), cutmon->
GetCutParameter(0)),
456 fCutMonitors->RemoveAt(i);
458 Cout::PrintInfo(Form(
"Problem with initalization Hal::CutMonitorXY [%s] vs [%s] vs "
465 Form(
"Cut %s has only %i not %i parameters", cut2->ClassName(), cut2->GetCutSize(), cutmon->
GetCutParameter(1)),
467 fCutMonitors->RemoveAt(i);
469 Cout::PrintInfo(Form(
"Problem with initalization Hal::CutMonitorXY [%s] vs [%s] vs "
476 Form(
"Cut %s has only %i not %i parameters", cut3->ClassName(), cut3->GetCutSize(), cutmon->
GetCutParameter(2)),
478 fCutMonitors->RemoveAt(i);
487 Ncut1->SetOwner(kFALSE);
488 Ncut2->SetOwner(kFALSE);
489 Ncut3->SetOwner(kFALSE);
494 Cout::PrintInfo(Form(
"Problems with class name %s of cuts this is an critial error", monName.Data()),
495 EInfo::kCriticalError);
498 fCutMonitors->Compress();
500 for (
int i = 0; i < fCutMonitors->GetEntriesFast(); i++) {
501 CutMonitor* mon = ((CutMonitor*) fCutMonitors->UncheckedAt(i));
502 mon->SetCollectionID(this->fCollectionID);
503 if (!mon->ObjMonitor()) mon->Init(task_id);
507 TObjArray* CutCollection::LocateInLowerCollections(TString cut) {
508 TObjArray* obj =
new TObjArray();
509 obj->SetOwner(kFALSE);
510 if (this->fMode == ECutUpdate::kEvent) {
return obj; }
511 if (this->fMode == ECutUpdate::kTrack) {
512 for (
int i = 0; i < this->
GetPrevNo(); i++) {
514 if (subcont->FindCut(cut)) { obj->AddLast(subcont->FindCut(cut)); }
518 if (this->fMode == ECutUpdate::kTwoTrack) {
520 for (
int i = 0; i < this->
GetPrevNo(); i++) {
522 if (subcont->FindCut(cut)) { obj->AddLast(subcont->FindCut(cut)); }
525 for (
int i = 0; i < this->
GetPrevNo(); i++) {
527 for (
int j = 0; j < subcont->GetPrevNo(); j++) {
529 if (subsubcont->FindCut(cut)) { obj->AddLast(subsubcont->FindCut(cut)); }
534 if (this->fMode == ECutUpdate::kTwoTrackBackground) {
536 for (
int i = 0; i < this->
GetPrevNo(); i++) {
538 if (subcont->FindCut(cut)) { obj->AddLast(subcont->FindCut(cut)); }
541 for (
int i = 0; i < this->
GetPrevNo(); i++) {
543 for (
int j = 0; j < subcont->GetPrevNo(); j++) {
546 if (subsubcont->FindCut(cut)) { obj->AddLast(subsubcont->FindCut(cut)); }
555 if (obj->ClassName() != this->ClassName())
return 0;
557 if (trigg == fCollectionID)
return 0;
558 if (trigg > fCollectionID)
return -1;
562 TObjArray* CutCollection::LocateCuts(TString classname) {
563 TObjArray* arr =
new TObjArray();
564 arr->SetOwner(kFALSE);
565 ECutUpdate cut_up = ECutUpdate::kNo;
566 cut_up = GetUpdateFromName(classname);
567 if (fMode == cut_up) {
572 if (fMode == ECutUpdate::kTwoTrackBackground && cut_up == ECutUpdate::kTwoTrack) {
576 }
else if (fPrev.IsUsed()) {
578 Cout::PrintInfo(
"Looking for cuts in lower collections", EInfo::kDebugInfo);
580 arr = LocateInLowerCollections(classname);
584 Cout::PrintInfo(
"Cut not found cut and no lower collections present", EInfo::kDebugInfo);
591 Cout::InStars(Form(
"Subcontainer trig %i", fCollectionID));
594 case (ECutUpdate::kEvent): {
597 case (ECutUpdate::kTrack): {
600 case (ECutUpdate::kTwoTrack): {
603 case (ECutUpdate::kTwoTrackBackground): {
604 mode =
"TTRack mixed";
606 default:
Cout::PrintInfo(
"Unknown update mode inf CutCollection", EInfo::kLowWarning);
break;
608 Cout::Text(Form(
"Mode %s", mode.Data()),
"L", kYellow);
609 for (
int i = 0; i < fCuts->GetEntriesFast(); i++) {
610 Cout::Text(fCuts->UncheckedAt(i)->ClassName(),
"L");
614 for (
int i = 0; i < fFastCuts->GetEntriesFast(); i++) {
615 Cout::Text(fFastCuts->UncheckedAt(i)->ClassName(),
"L");
618 for (
int i = 0; i < fCutMonitors->GetEntriesFast(); i++) {
619 Cout::Text(fCutMonitors->UncheckedAt(i)->ClassName(),
"L");
626 Bool_t result = kTRUE;
627 for (
int i = 0; i < fFastCutsNo; i++) {
628 if (kFALSE == ((
EventCut*) fFastCuts->UncheckedAt(i))->Pass(obj)) {
634 for (
int i = 0; i < fSlowCutsNo; i++) {
635 if (kFALSE == ((
EventCut*) fCuts->UncheckedAt(i))->Pass(obj)) { result = kFALSE; }
642 Bool_t result = kTRUE;
643 for (
int i = 0; i < fFastCutsNo; i++) {
644 if (kFALSE == ((
TrackCut*) fFastCuts->UncheckedAt(i))->Pass(obj)) {
650 for (
int i = 0; i < fSlowCutsNo; i++) {
651 if (kFALSE == ((
TrackCut*) fCuts->UncheckedAt(i))->Pass(obj)) { result = kFALSE; }
658 Bool_t result = kTRUE;
659 for (
int i = 0; i < fFastCutsNo; i++) {
660 if (kFALSE == ((
TwoTrackCut*) fFastCuts->UncheckedAt(i))->Pass(pair)) {
666 for (
int i = 0; i < fSlowCutsNo; i++) {
667 if (kFALSE == ((
TwoTrackCut*) fCuts->UncheckedAt(i))->Pass(pair)) { result = kFALSE; }
669 Update(result, pair);
676 case (ECutUpdate::kEvent): {
679 case (ECutUpdate::kTrack): {
682 case (ECutUpdate::kTwoTrack): {
701 TList* list =
new TList();
702 list->SetOwner(kTRUE);
704 for (
int i = 0; i < col.GetSize(); i++) {
705 list->AddAt(
new ParameterInt(Form(
"%i", i), col.GetAddr(i)), i);
710 if (fNext.IsUsed()) used++;
711 if (fNextBckg.IsUsed()) used++;
713 if (fNext.IsUsed()) pack->
AddObject(MakeList(
"NextObj_0", fNext));
714 if (fNextBckg.IsUsed()) pack->
AddObject(MakeList(
"NextObj_1", fNextBckg));
717 if (fPrev.IsUsed()) used++;
718 if (fPrevBckg.IsUsed()) used++;
721 if (fPrev.IsUsed()) pack->
AddObject(MakeList(
"PrevObj_0", fPrev));
722 if (fPrevBckg.IsUsed()) pack->
AddObject(MakeList(
"PrevObj_1", fPrevBckg));
724 TList* CutMonitorList =
new TList();
725 CutMonitorList->SetOwner(kTRUE);
726 CutMonitorList->SetName(
"CutMonitorList");
727 for (
int i = 0; i < fCutMonitors->GetEntriesFast(); i++)
728 CutMonitorList->Add(((
CutMonitor*) fCutMonitors->At(i))->Report());
729 TList* CutList =
new TList();
730 CutList->SetOwner(kTRUE);
731 CutList->SetName(
"CutList");
732 for (
int i = 0; i < fCuts->GetEntriesFast(); i++)
733 CutList->Add(((
Cut*) fCuts->At(i))->Report());
736 TList* CutList2 =
new TList();
737 CutList2->SetOwner(kTRUE);
738 CutList2->SetName(
"FastCutList");
739 for (
int i = 0; i < fFastCuts->GetEntriesFast(); i++)
740 CutList2->Add(((
Cut*) fFastCuts->At(i))->Report());
757 fMode(ECutUpdate::kNo),
763 fCutContainerArr(0) {
764 Cout::PrintInfo(
"default constructor of CutCollection should never be used !!", EInfo::kLowWarning);
769 for (
int i = 0; i < fCutMonitors->GetEntriesFast(); i++) {
770 subcont->fCutMonitors->Add(((
CutMonitor*) fCutMonitors->UncheckedAt(i))->MakeCopy());
772 for (
int i = 0; i < fCuts->GetEntriesFast(); i++) {
773 subcont->fCuts->Add(((
Cut*) fCuts->UncheckedAt(i))->MakeCopy());
775 for (
int i = 0; i < fFastCuts->GetEntriesFast(); i++) {
776 subcont->fFastCuts->Add(((
Cut*) fFastCuts->UncheckedAt(i))->MakeCopy());
782 if (fDummy == kFALSE) {
787 fCutMonitors = copy->fCutMonitors;
789 fFastCuts = copy->fFastCuts;
790 fPassedSlow = copy->fPassedSlow;
791 fFailedSlow = copy->fFailedSlow;
792 fPassedFast = copy->fPassedFast;
793 fFailedFast = copy->fPassedFast;
796 fDummy = copy->fDummy;
797 fCollectionID = copy->fCollectionID;
798 fContainerSize = copy->fContainerSize;
799 fFailedFast = copy->fFailedFast;
800 fFailedSlow = copy->fFailedSlow;
801 fPassedFast = copy->fPassedFast;
802 fPassedSlow = copy->fPassedSlow;
803 fCutMonitorsNo = copy->fCutMonitorsNo;
804 fFastCutsNo = copy->fFastCutsNo;
805 fSlowCutsNo = copy->fSlowCutsNo;
806 if (copy->fPrev.IsUsed()) fPrev = copy->fPrev;
807 if (copy->fPrevBckg.IsUsed()) fPrevBckg = copy->fPrevBckg;
808 if (copy_high_links) {
809 if (copy->fNext.IsUsed()) fNext = copy->fNext;
810 if (copy->fNextBckg.IsUsed()) fNextBckg = copy->fNextBckg;
815 CutCollection::~CutCollection() {
816 if (fDummy == kFALSE) {
817 if (fCuts) fCuts->Delete();
818 if (fCutMonitors) fCutMonitors->Delete();
826 TString option = opt;
827 if (option ==
"fast") {
835 TString option = opt;
836 if (option ==
"fast") {
845 ECutUpdate CutCollection::GetUpdateFromName(TString cutname)
const {
846 if (cutname.BeginsWith(
"Hal::EventComplexCut"))
return ECutUpdate::kEvent;
847 if (cutname.BeginsWith(
"Hal::TrackComplexCut"))
return ECutUpdate::kTrack;
848 if (cutname.BeginsWith(
"Hal::TwoTrackComplexCut"))
return ECutUpdate::kTwoTrack;
849 if (cutname.BeginsWith(
"Hal::EventRealCut"))
return ECutUpdate::kEvent;
850 if (cutname.BeginsWith(
"Hal::TrackRealCut"))
return ECutUpdate::kTrack;
851 if (cutname.BeginsWith(
"Hal::TwoTrackRealCut"))
return ECutUpdate::kTwoTrack;
852 if (cutname.BeginsWith(
"Hal::EventImaginaryCut"))
return ECutUpdate::kEvent;
853 if (cutname.BeginsWith(
"Hal::TrackImaginaryCut"))
return ECutUpdate::kTrack;
854 if (cutname.BeginsWith(
"Hal::TwoTrackImaginaryCut"))
return ECutUpdate::kTwoTrack;
855 TClass* cl = TClass::GetClass(cutname, kFALSE, kTRUE);
856 if (cl->InheritsFrom(
"Hal::EventCut")) {
857 return ECutUpdate::kEvent;
858 }
else if (cl->InheritsFrom(
"Hal::TrackCut")) {
859 return ECutUpdate::kTrack;
861 return ECutUpdate::kTwoTrack;
865 void CutCollectionLinks::SafeInit() {
866 if (fLinks.size() == 0) fLinks.push_back(0);
869 void CutCollectionLinks::AddAddr(Int_t addr) {
870 if (addr < 0)
return;
871 fLinks.push_back(addr);
static void Text(TString text, TString option="L", Color_t color=-1)
static void PrintInfo(TString text, Hal::EInfo status)
static void Database(Int_t no...)
Int_t GetPrevAddr(Int_t index) const
void MakeDummyCopy(const CutCollection *copy, Bool_t copy_high_links=kTRUE)
CutCollection * MakeNewCopy(TObjArray **container) const
Int_t GetCollectionID() const
Bool_t PassEvent(Event *obj)
void AddPreviousAddr(Int_t value, Bool_t background=kFALSE)
void AddCutMonitor(CutMonitor *monitor)
Bool_t PassTwoTrack(TwoTrack *pair)
Cut * GetCut(Int_t index) const
void AddCut(Cut *cut, Option_t *opt=" ")
Bool_t PassTrack(Track *obj)
virtual Package * Report() const
CutCollection * Replicate(Int_t new_collection) const
Cut * FindCut(TString name) const
Int_t Compare(const TObject *obj) const
void AddNextAddr(Int_t value, Bool_t background=kFALSE)
CutMonitor * GetCutMonitor(Int_t index) const
ULong64_t GetFailed(Option_t *opt="") const
ULong64_t GetPassed(Option_t *opt="") const
Int_t GetCutParameter(Int_t i) const
void AddForcedCut(Cut *cut, Int_t no)
TString GetCutName(Int_t i) const
virtual Bool_t Init(Int_t task_id)
virtual Bool_t ObjMonitor() const
virtual TString CutName(Option_t *opt="") const
ECutUpdate GetUpdateRatio() const
void SetCollectionID(Int_t i)
virtual Cut * MakeCopy() const
Int_t GetCollectionID() const
void AddObject(TObject *object)