181 for (Int_t i=0; i<=8; i=i+2)
270 for (Int_t i=0; i<10; i++)
353 if (type==
"and")
fLogic=1;
355 if (type==
"nand")
fLogic=-1;
356 if (type==
"nor")
fLogic=-2;
400 for (Int_t i=0; i<nen; i++)
402 TObjString* sx=(TObjString*)
fUseNames->At(i);
412 TObjString* namex=
new TObjString();
413 namex->SetString(name);
439 fParams->AddNamedSlot(
"AstroDa");
440 fParams->AddNamedSlot(
"AstroDt");
441 fParams->AddNamedSlot(
"AstroDir");
486 fParams->AddNamedSlot(
"TrackMinP");
487 fParams->AddNamedSlot(
"TrackMaxP");
488 fParams->SetSignal(low,
"TrackMinP");
489 fParams->SetSignal(up,
"TrackMaxP");
495 fParams->AddNamedSlot(
"TrackMinPt");
496 fParams->AddNamedSlot(
"TrackMaxPt");
497 fParams->SetSignal(low,
"TrackMinPt");
498 fParams->SetSignal(up,
"TrackMaxPt");
504 fParams->AddNamedSlot(
"TrackMinPl");
505 fParams->AddNamedSlot(
"TrackMaxPl");
506 fParams->SetSignal(low,
"TrackMinPl");
507 fParams->SetSignal(up,
"TrackMaxPl");
513 fParams->AddNamedSlot(
"TrackMinE");
514 fParams->AddNamedSlot(
"TrackMaxE");
515 fParams->SetSignal(low,
"TrackMinE");
516 fParams->SetSignal(up,
"TrackMaxE");
522 fParams->AddNamedSlot(
"TrackMinEt");
523 fParams->AddNamedSlot(
"TrackMaxEt");
524 fParams->SetSignal(low,
"TrackMinEt");
525 fParams->SetSignal(up,
"TrackMaxEt");
531 fParams->AddNamedSlot(
"TrackMinEl");
532 fParams->AddNamedSlot(
"TrackMaxEl");
533 fParams->SetSignal(low,
"TrackMinEl");
534 fParams->SetSignal(up,
"TrackMaxEl");
540 fParams->AddNamedSlot(
"TrackMinM");
541 fParams->AddNamedSlot(
"TrackMaxM");
542 fParams->SetSignal(low,
"TrackMinM");
543 fParams->SetSignal(up,
"TrackMaxM");
549 fParams->AddNamedSlot(
"TrackMinQ");
550 fParams->AddNamedSlot(
"TrackMaxQ");
551 fParams->SetSignal(low,
"TrackMinQ");
552 fParams->SetSignal(up,
"TrackMaxQ");
558 fParams->AddNamedSlot(
"TrackMinY");
559 fParams->AddNamedSlot(
"TrackMaxY");
560 fParams->SetSignal(low,
"TrackMinY");
561 fParams->SetSignal(up,
"TrackMaxY");
567 fParams->AddNamedSlot(
"TrackMinEta");
568 fParams->AddNamedSlot(
"TrackMaxEta");
569 fParams->SetSignal(low,
"TrackMinEta");
570 fParams->SetSignal(up,
"TrackMaxEta");
580 fParams->AddNamedSlot(
"EventMinP");
581 fParams->AddNamedSlot(
"EventMaxP");
582 fParams->SetSignal(low,
"EventMinP");
583 fParams->SetSignal(up,
"EventMaxP");
589 fParams->AddNamedSlot(
"EventMinPt");
590 fParams->AddNamedSlot(
"EventMaxPt");
591 fParams->SetSignal(low,
"EventMinPt");
592 fParams->SetSignal(up,
"EventMaxPt");
598 fParams->AddNamedSlot(
"EventMinPl");
599 fParams->AddNamedSlot(
"EventMaxPl");
600 fParams->SetSignal(low,
"EventMinPl");
601 fParams->SetSignal(up,
"EventMaxPl");
607 fParams->AddNamedSlot(
"EventMinE");
608 fParams->AddNamedSlot(
"EventMaxE");
609 fParams->SetSignal(low,
"EventMinE");
610 fParams->SetSignal(up,
"EventMaxE");
616 fParams->AddNamedSlot(
"EventMinEt");
617 fParams->AddNamedSlot(
"EventMaxEt");
618 fParams->SetSignal(low,
"EventMinEt");
619 fParams->SetSignal(up,
"EventMaxEt");
625 fParams->AddNamedSlot(
"EventMinEl");
626 fParams->AddNamedSlot(
"EventMaxEl");
627 fParams->SetSignal(low,
"EventMinEl");
628 fParams->SetSignal(up,
"EventMaxEl");
634 fParams->AddNamedSlot(
"EventMinM");
635 fParams->AddNamedSlot(
"EventMaxM");
636 fParams->SetSignal(low,
"EventMinM");
637 fParams->SetSignal(up,
"EventMaxM");
643 fParams->AddNamedSlot(
"EventMinQ");
644 fParams->AddNamedSlot(
"EventMaxQ");
645 fParams->SetSignal(low,
"EventMinQ");
646 fParams->SetSignal(up,
"EventMaxQ");
652 fParams->AddNamedSlot(
"EventMinVetoLevel");
653 fParams->AddNamedSlot(
"EventMaxVetoLevel");
654 fParams->SetSignal(low,
"EventMinVetoLevel");
655 fParams->SetSignal(up,
"EventMaxVetoLevel");
699 fParams->AddNamedSlot(
"TrackMinNdev");
700 fParams->AddNamedSlot(
"TrackMaxNdev");
701 fParams->SetSignal(
float(nlow),
"TrackMinNdev");
702 fParams->SetSignal(
float(nup),
"TrackMaxNdev");
713 fParams->AddNamedSlot(
"EventMinNdev");
714 fParams->AddNamedSlot(
"EventMaxNdev");
715 fParams->SetSignal(
float(nlow),
"EventMinNdev");
716 fParams->SetSignal(
float(nup),
"EventMaxNdev");
723 fParams->AddNamedSlot(
"EventMinNtrk");
724 fParams->AddNamedSlot(
"EventMaxNtrk");
725 fParams->SetSignal(
float(nlow),
"EventMinNtrk");
726 fParams->SetSignal(
float(nup),
"EventMaxNtrk");
732 fParams->AddNamedSlot(
"EventMinNtkc");
733 fParams->AddNamedSlot(
"EventMaxNtkc");
734 fParams->SetSignal(
float(nlow),
"EventMinNtkc");
735 fParams->SetSignal(
float(nup),
"EventMaxNtkc");
741 fParams->AddNamedSlot(
"EventMinNtk0");
742 fParams->AddNamedSlot(
"EventMaxNtk0");
743 fParams->SetSignal(
float(nlow),
"EventMinNtk0");
744 fParams->SetSignal(
float(nup),
"EventMaxNtk0");
750 fParams->AddNamedSlot(
"EventMinNtk+");
751 fParams->AddNamedSlot(
"EventMaxNtk+");
752 fParams->SetSignal(
float(nlow),
"EventMinNtk+");
753 fParams->SetSignal(
float(nup),
"EventMaxNtk+");
759 fParams->AddNamedSlot(
"EventMinNtk-");
760 fParams->AddNamedSlot(
"EventMaxNtk-");
761 fParams->SetSignal(
float(nlow),
"EventMinNtk-");
762 fParams->SetSignal(
float(nup),
"EventMaxNtk-");
776 NcJob* parent=(
NcJob*)(gROOT->GetListOfTasks()->FindObject(name.Data()));
791 cout <<
" *NcEventSelector* Selection parameters." << endl;
792 cout <<
" Selection types in use :";
798 cout <<
" Selection logic in use :";
799 if (
fLogic==1) cout <<
" and";
800 if (
fLogic==2) cout <<
" or";
801 if (
fLogic==-1) cout <<
" nand";
802 if (
fLogic==-2) cout <<
" nor";
803 if (!
fLogic) cout <<
" unknown";
805 if (nnames) cout <<
" Track name selections to be processed (-1=all)." << endl;
806 for (Int_t i=0; i<nnames; i++)
810 str=strx->GetString();
812 cout <<
" Maximally " << ntkmax <<
" track(s) per event of name : " << str.Data() << endl;
821 fParams->SetNameTitle(
"NcEventSelector",
"NcEventSelector processor parameters");
833 fParams->AddNamedSlot(
"Logic");
835 fParams->AddNamedSlot(
"Eventflag");
837 fParams->AddNamedSlot(
"Trackflag");
839 fParams->AddNamedSlot(
"Astroflag");
841 fParams->AddNamedSlot(
"Select");
845 if (dx)
fEvt->RemoveDevice(dx);
883 for (Int_t i=0; i<nnames; i++)
887 str=strx->GetString();
891 tracks=
fEvt->GetTracks();
895 tracks=
fEvt->GetTracks(str);
898 if (tracks) ntk=tracks->GetEntries();
899 if (ntkmax>0 && ntk>ntkmax) ntk=ntkmax;
901 for (Int_t jtk=0; jtk<ntk; jtk++)
903 track=(
NcTrack*)tracks->At(jtk);
904 if (!track)
continue;
915 if (abs(
fLogic)==2)
return;
925 if (abs(
fLogic)==2)
return;
935 if (abs(
fLogic)==2)
return;
945 if (abs(
fLogic)==2)
return;
955 if (abs(
fLogic)==2)
return;
965 if (abs(
fLogic)==2)
return;
975 if (abs(
fLogic)==2)
return;
985 if (abs(
fLogic)==2)
return;
995 if (abs(
fLogic)==2)
return;
1005 if (abs(
fLogic)==2)
return;
1015 if (abs(
fLogic)==2)
return;
1055 val=
fEvt->GetMomentum(1);
1059 if (abs(
fLogic)==2)
return;
1069 if (abs(
fLogic)==2)
return;
1079 if (abs(
fLogic)==2)
return;
1085 val=
fEvt->GetEnergy(1);
1089 if (abs(
fLogic)==2)
return;
1099 if (abs(
fLogic)==2)
return;
1109 if (abs(
fLogic)==2)
return;
1115 val=
fEvt->GetInvmass(1);
1119 if (abs(
fLogic)==2)
return;
1125 val=
fEvt->GetCharge();
1129 if (abs(
fLogic)==2)
return;
1137 if (veto) val=veto->
GetSignal(
"VetoLevel");
1141 if (abs(
fLogic)==2)
return;
1151 if (abs(
fLogic)==2)
return;
1159 ival=
fEvt->GetNtracks();
1168 if (abs(
fLogic)==2)
return;
1174 ival=
fEvt->GetNtracks(0,3,0);
1178 if (abs(
fLogic)==2)
return;
1184 ival=
fEvt->GetNtracks(0,0,0);
1188 if (abs(
fLogic)==2)
return;
1194 ival=
fEvt->GetNtracks(0,1,0);
1198 if (abs(
fLogic)==2)
return;
1204 ival=
fEvt->GetNtracks(0,-1,0);
1208 if (abs(
fLogic)==2)
return;
1236 p=
fEvt->Get3Momentum();
1268 if (strlen(name)) sel->SetName(name);
ClassImp(NcEventSelector)
Handling of 3-vectors in various reference frames.
Double_t GetPseudoRapidity()
NcAstrolab(const char *name="User", const char *title="Virtual Lab for general use")
TArrayI * MatchRefSignal(Double_t da, TString au, Double_t dt, TString tu, Int_t mode=1)
NcSignal * SetSignal(Double_t d, Double_t a, TString au, Double_t b, TString bu, TString frame, NcTimestamp *ts, Int_t jref, TString mode="T", TString name="", Int_t type=0)
Signal (Hit) handling of a generic device.
Creation and investigation of an NCFS generic event structure.
TTask derived class to perform generic event selection.
Double_t fTrackEnergies[6]
NcEventSelector(const char *name="NcEventSelector", const char *title="Event selection")
void SetLogic(TString type)
void SetAstroMatch(Double_t da, Double_t dt, TString dir)
Double_t fEventEnergies[6]
virtual void Exec(Option_t *opt)
Double_t fTrackRapidities[4]
Double_t fTrackMomenta[6]
virtual ~NcEventSelector()
Double_t fEventMomenta[6]
void SetRange(TString type, TString obs, Double_t low, Double_t up)
virtual TObject * Clone(const char *name="") const
void SetSelector(TString type, Int_t flag=1)
void UseTracks(TString name, Int_t n=-1)
Base class for top level job in a task based procedure.
TObject * GetObject(const char *classname) const
virtual Float_t GetSignal(Int_t j=1, Int_t mode=0) const
Handling of the attributes of a reconstructed particle track.
Double_t GetEt(Float_t scale=-1)
NcTimestamp * GetTimestamp()
Double_t GetPl(Float_t scale=-1)
Int_t GetNsignals() const
Double_t GetEl(Float_t scale=-1)
Double_t GetEnergy(Float_t scale=-1)
Double_t GetMass(Float_t scale=-1)
Nc3Vector Get3Momentum(Float_t scale=-1) const
Float_t GetCharge() const
Double_t GetPt(Float_t scale=-1)
Double_t GetMomentum(Float_t scale=-1)