// Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
//-----------------------------------------------------------------
-class AliLog;
+#include <AliLog.h>
class AliESD;
+#include <TMath.h>
#include "AliEventTag.h"
#include "AliEventTagCuts.h"
+#include <TObjArray.h>
+#include <TObjString.h>
ClassImp(AliEventTagCuts)
//___________________________________________________________________________
AliEventTagCuts::AliEventTagCuts() :
TObject(),
-
+ fPeriodNumberMin(0), fPeriodNumberMax(0xFFFFFFFF), fPeriodNumberFlag(kFALSE),
+ fOrbitNumberMin(0), fOrbitNumberMax(0xFFFFFFFF), fOrbitNumberFlag(kFALSE),
+ fBunchCrossNumberMin(0), fBunchCrossNumberMax(0xFFFF),
+ fBunchCrossNumberFlag(kFALSE),
+ fEventType(7), fEventTypeFlag(kFALSE),
+ fNParticipantsMin(-1), fNParticipantsMax(10000),
+ fNParticipantsFlag(kFALSE),
+ fImpactParamMin(-1.0), fImpactParamMax(1000.0),
+ fImpactParamFlag(kFALSE),
+ fEtaMin(-13.0), fEtaMax(13.0),
+ fEtaFlag(kFALSE),
+ fPhiMin(0.), fPhiMax(2*(TMath::Pi())),
+ fPhiFlag(kFALSE),
fVxMin(-1000.0), fVxMax(1000.0),
fVxFlag(kFALSE),
fVyMin(-1000.0), fVyMax(1000.0),
fVyFlag(kFALSE),
fVzMin(-1000.0), fVzMax(1000.0),
fVzFlag(kFALSE),
- fNParticipantsMin(-1), fNParticipantsMax(10000),
- fNParticipantsFlag(kFALSE),
- fImpactParamMin(-1.0), fImpactParamMax(1000.0),
- fImpactParamFlag(kFALSE),
fPrimaryVertexFlag(1),
fPVFlag(kFALSE),
fTopJetEnergyMin(-1.0),
fTopJetEnergyMinFlag(kFALSE),
- fNHardPhotonCandidatesMin(-1), fNHardPhotonCandidatesMax(100000),
- fNHardPhotonCandidatesFlag(kFALSE),
fTopNeutralEnergyMin(-1.0),
fTopNeutralEnergyMinFlag(kFALSE),
+ fNHardPhotonCandidatesMin(-1), fNHardPhotonCandidatesMax(100000),
+ fNHardPhotonCandidatesFlag(kFALSE),
fNChargedAbove1GeVMin(-1), fNChargedAbove1GeVMax(100000),
fNChargedAbove1GeVFlag(kFALSE),
fNChargedAbove3GeVMin(-1), fNChargedAbove3GeVMax(100000),
fNElectronsAbove10GeVFlag(kFALSE),
fNElectronsMin(-1), fNElectronsMax(100000),
fNElectronsFlag(kFALSE),
+ fNFWMuonsMin(-1), fNFWMuonsMax(100000),
+ fNFWMuonsFlag(kFALSE),
+ fNFWMatchedMuonsMin(-1), fNFWMatchedMuonsMax(100000),
+ fNFWMatchedMuonsFlag(kFALSE),
fNMuonsMin(-1), fNMuonsMax(100000),
fNMuonsFlag(kFALSE),
fNPionsMin(-1), fNPionsMax(100000),
fEventPlaneAngleMin(-10000000.0), fEventPlaneAngleMax(10000000.0),
fEventPlaneAngleFlag(kFALSE),
fHBTRadiiMin(-1.0), fHBTRadiiMax(100000.0),
- fHBTRadiiFlag(kFALSE)
+ fHBTRadiiFlag(kFALSE),
+
+ fNumberOfFiredChipsLayer1Min(0), fNumberOfFiredChipsLayer1Max(100000),
+ fNumberOfFiredChipsLayer1Flag(kFALSE),
+ fNumberOfFiredChipsLayer2Min(0), fNumberOfFiredChipsLayer2Max(100000),
+ fNumberOfFiredChipsLayer2Flag(kFALSE),
+ fNumberOfSPDTrackletsMin(0), fNumberOfSPDTrackletsMax(100000),
+ fNumberOfSPDTrackletsFlag(kFALSE),
+
+ fFiredTriggerClassFlag(kFALSE), fFiredTriggerClass(""),
+ fActiveTriggerClasses("")
{
//Default constructor which calls the Reset method.
Reset();
//___________________________________________________________________________
void AliEventTagCuts::Reset() {
//Sets dummy values to every private member.
+ fPeriodNumberFlag = kFALSE;
+ fOrbitNumberFlag = kFALSE;
+ fBunchCrossNumberFlag = kFALSE;
+
+ fEventTypeFlag = kFALSE;
+
fNParticipantsFlag = kFALSE;
fImpactParamFlag = kFALSE;
+ fEtaFlag = kFALSE;
+ fPhiFlag = kFALSE;
fVxFlag = kFALSE;
fVyFlag = kFALSE;
fVzFlag = kFALSE;
fNElectronsAbove3GeVFlag = kFALSE;
fNElectronsAbove10GeVFlag = kFALSE;
fNElectronsFlag = kFALSE;
+ fNFWMuonsFlag = kFALSE;
+ fNFWMatchedMuonsFlag = kFALSE;
fNMuonsFlag = kFALSE;
fNPionsFlag = kFALSE;
fNKaonsFlag = kFALSE;
fTopNeutralPtMinFlag = kFALSE;
fEventPlaneAngleFlag = kFALSE;
fHBTRadiiFlag = kFALSE;
-
+
+ fNumberOfFiredChipsLayer1Flag = kFALSE;
+ fNumberOfFiredChipsLayer2Flag = kFALSE;
+ fNumberOfSPDTrackletsFlag = kFALSE;
+
+ fPeriodNumberMin = 0, fPeriodNumberMax = 0xFFFFFFFF;
+ fOrbitNumberMin = 0, fOrbitNumberMax = 0xFFFFFFFF;
+ fBunchCrossNumberMin = 0, fBunchCrossNumberMax = 0xFFFF;
+
+ fEventType = 7;
+
+ fEtaMin = -13.0; fEtaMax = 13.0;
+ fPhiMin = 0.; fPhiMax = 2*(TMath::Pi());
fVxMin = -1000.0; fVxMax = 1000.0;
fVyMin = -1000.0; fVyMax = 1000.0;
fVzMin = -1000.0; fVzMax = 1000.0;
fNElectronsAbove3GeVMin = -1; fNElectronsAbove3GeVMax = 100000;
fNElectronsAbove10GeVMin = -1; fNElectronsAbove10GeVMax = 100000;
fNElectronsMin = -1; fNElectronsMax = 100000;
+ fNFWMuonsMin = -1; fNFWMuonsMax = 100000;
+ fNFWMatchedMuonsMin = -1; fNFWMatchedMuonsMax = 100000;
fNMuonsMin = -1; fNMuonsMax = 100000;
fNPionsMin = -1; fNPionsMax = 100000;
fNKaonsMin = -1; fNKaonsMax = 100000;
fTopNeutralPtMin = -1.0;
fEventPlaneAngleMin = -10000000.0; fEventPlaneAngleMax = 10000000.0;
fHBTRadiiMin = -1.0; fHBTRadiiMax = 100000.0;
+
+ fNumberOfFiredChipsLayer1Min = 0, fNumberOfFiredChipsLayer1Max = 100000;
+ fNumberOfFiredChipsLayer2Min = 0, fNumberOfFiredChipsLayer2Max = 100000;
+ fNumberOfSPDTrackletsMin = 0, fNumberOfSPDTrackletsMax = 100000;
+
+ fFiredTriggerClass = "";
+ fFiredTriggerClassFlag = kFALSE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetEventType(UInt_t ntype) {
+ //Sets the event type
+ //and the corresponding flag to kTRUE if the cut is used.
+ fEventType = ntype;
+ fEventTypeFlag = kTRUE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetNumberOfFiredChipsLayer1Range(Int_t low, Int_t high) {
+ //Sets the range for the number of fired chips of layer 1
+ //and the corresponding flag to kTRUE if the cut is used.
+ fNumberOfFiredChipsLayer1Min = low;
+ fNumberOfFiredChipsLayer1Max = high;
+ fNumberOfFiredChipsLayer1Flag = kTRUE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetNumberOfFiredChipsLayer2Range(Int_t low, Int_t high) {
+ //Sets the range for the number of fired chips of layer 2
+ //and the corresponding flag to kTRUE if the cut is used.
+ fNumberOfFiredChipsLayer2Min = low;
+ fNumberOfFiredChipsLayer2Max = high;
+ fNumberOfFiredChipsLayer2Flag = kTRUE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetNumberOfSPDTrackletsRange(Int_t low, Int_t high) {
+ //Sets the range for the number of fired chips of layer 1
+ //and the corresponding flag to kTRUE if the cut is used.
+ fNumberOfSPDTrackletsMin = low;
+ fNumberOfSPDTrackletsMax = high;
+ fNumberOfSPDTrackletsFlag = kTRUE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetPeriodNumberRange(UInt_t low, UInt_t high) {
+ //Sets the period number range
+ //and the corresponding flag to kTRUE if the cut is used.
+ fPeriodNumberMin = low;
+ fPeriodNumberMax = high;
+ fPeriodNumberFlag = kTRUE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetOrbitNumberRange(UInt_t low, UInt_t high) {
+ //Sets the orbit number range
+ //and the corresponding flag to kTRUE if the cut is used.
+ fOrbitNumberMin = low;
+ fOrbitNumberMax = high;
+ fOrbitNumberFlag = kTRUE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetBunchCrossNumberRange(UShort_t low, UShort_t high) {
+ //Sets the BC number range
+ //and the corresponding flag to kTRUE if the cut is used.
+ fBunchCrossNumberMin = low;
+ fBunchCrossNumberMax = high;
+ fBunchCrossNumberFlag = kTRUE;
}
//___________________________________________________________________________
fVzFlag = kTRUE;
}
+//___________________________________________________________________________
+ void AliEventTagCuts::SetEtaLeadingParticleRange(Float_t low, Float_t high) {
+ //Sets the eta range of LP
+ //and the corresponding flag to kTRUE if the cut is used.
+ fEtaMin = low;
+ fEtaMax = high;
+ fEtaFlag = kTRUE;
+}
+//__________________________________________________________________________
+void AliEventTagCuts::SetPhiLeadingParticleRange(Float_t low, Float_t high) {
+ //Sets the eta range of LP
+ //and the corresponding flag to kTRUE if the cut is used.
+ fPhiMin = low;
+ fPhiMax = high;
+ fPhiFlag = kTRUE;
+}
+
//___________________________________________________________________________
void AliEventTagCuts::SetPrimaryVertexZErrorRange(Float_t low, Float_t high) {
//Sets the primary vertex z error range
}
//___________________________________________________________________________
void AliEventTagCuts::SetZDCEMRange(Float_t low, Float_t high) {
- //Sets the ZDC's e/m energy range
+ //Sets the ZDC's em energy range
//and the corresponding flag to kTRUE if the cut is used.
fZDCEMEnergyMin = low;
fZDCEMEnergyMax = high;
fNElectronsMax = high;
fNElectronsFlag = kTRUE;
}
+//___________________________________________________________________________
+void AliEventTagCuts::SetNFWMuonRange(Int_t low, Int_t high) {
+ //Sets the forward muon multiplicity range
+ //and the corresponding flag to kTRUE if the cut is used.
+ fNFWMuonsMin = low;
+ fNFWMuonsMax = high;
+ fNFWMuonsFlag = kTRUE;
+}
+
+//___________________________________________________________________________
+void AliEventTagCuts::SetNFWMatchedMuonRange(Int_t low, Int_t high) {
+ //Sets the forward trigger matched muon multiplicity range
+ //and the corresponding flag to kTRUE if the cut is used.
+ fNFWMatchedMuonsMin = low;
+ fNFWMatchedMuonsMax = high;
+ fNFWMatchedMuonsFlag = kTRUE;
+}
+
//___________________________________________________________________________
void AliEventTagCuts::SetNMuonRange(Int_t low, Int_t high) {
//Sets the muon multiplicity range
fHBTRadiiFlag = kTRUE;
}
+void AliEventTagCuts::AddRequiredFiredTriggerClass(TString aclass)
+{
+ fFiredTriggerClass += " ";
+ fFiredTriggerClass += aclass;
+ fFiredTriggerClassFlag = kTRUE;
+}
+
+void AliEventTagCuts::ResetTriggerClasses()
+{
+ fFiredTriggerClassFlag = kFALSE;
+ fFiredTriggerClass = "";
+}
+
+void AliEventTagCuts::InitializeTriggerClasses(TString aclass)
+{
+ fActiveTriggerClasses = aclass;
+}
+
//___________________________________________________________________________
Bool_t AliEventTagCuts::IsAccepted(AliEventTag *EvTag) const {
//Returns true if the event is accepted otherwise false.
+ if(fEventTypeFlag)
+ if(EvTag->GetEventType() != fEventType)
+ return kFALSE;
+
+ if(fNumberOfFiredChipsLayer1Flag)
+ if((EvTag->GetNumberOfFiredChipsLayer1() < fNumberOfFiredChipsLayer1Min) || (EvTag->GetNumberOfFiredChipsLayer1() > fNumberOfFiredChipsLayer1Max))
+ return kFALSE;
+
+ if(fNumberOfFiredChipsLayer2Flag)
+ if((EvTag->GetNumberOfFiredChipsLayer2() < fNumberOfFiredChipsLayer2Min) || (EvTag->GetNumberOfFiredChipsLayer2() > fNumberOfFiredChipsLayer2Max))
+ return kFALSE;
+
+ if(fNumberOfSPDTrackletsFlag)
+ if((EvTag->GetNumberOfSPDTracklets() < fNumberOfSPDTrackletsMin) || (EvTag->GetNumberOfSPDTracklets() > fNumberOfSPDTrackletsMax))
+ return kFALSE;
+
+ if(fPeriodNumberFlag)
+ if((EvTag->GetPeriodNumber() < fPeriodNumberMin) || (EvTag->GetPeriodNumber() > fPeriodNumberMax))
+ return kFALSE;
+
+ if(fOrbitNumberFlag)
+ if((EvTag->GetOrbitNumber() < fOrbitNumberMin) || (EvTag->GetOrbitNumber() > fOrbitNumberMax))
+ return kFALSE;
+
+ if(fBunchCrossNumberFlag)
+ if((EvTag->GetBunchCrossNumber() < fBunchCrossNumberMin) || (EvTag->GetBunchCrossNumber() > fBunchCrossNumberMax))
+ return kFALSE;
+
+
+ if(fEtaFlag)
+ if((EvTag->GetEtaMaxPt() < fEtaMin) || (EvTag->GetEtaMaxPt() > fEtaMax))
+ return kFALSE;
+
+ if(fPhiFlag)
+ if((EvTag->GetPhiMaxPt() < fPhiMin) || (EvTag->GetPhiMaxPt() > fPhiMax))
+ return kFALSE;
+
if(fVzFlag)
if((EvTag->GetVertexZ() < fVzMin) || (EvTag->GetVertexZ() > fVzMax))
return kFALSE;
if((EvTag->GetVertexZError() < fPrimaryVertexZErrorMin) || (EvTag->GetVertexZError() > fPrimaryVertexZErrorMax))
return kFALSE;
if(fTriggerMaskFlag)
- if((EvTag->GetTriggerMask() != fTriggerMask))
+ if((EvTag->GetTriggerMask() & fTriggerMask) != fTriggerMask)
return kFALSE;
if(fTriggerClusterFlag)
- if((EvTag->GetTriggerMask() != fTriggerMask))
+ if((EvTag->GetTriggerCluster() != fTriggerCluster))
return kFALSE;
if(fZDCNeutron1EnergyFlag)
return kFALSE;
if(fZDCEMEnergyFlag)
- if((EvTag->GetZDCEMEnergy() < fZDCEMEnergyMin) || (EvTag->GetZDCEMEnergy() > fZDCEMEnergyMax))
+ if((EvTag->GetZDCEMEnergy(1) < fZDCEMEnergyMin) || (EvTag->GetZDCEMEnergy(1) > fZDCEMEnergyMax))
return kFALSE;
if(fT0VertexZFlag)
if((EvTag->GetNumOfElectrons() < fNElectronsMin) || (EvTag->GetNumOfElectrons() > fNElectronsMax))
return kFALSE;
+ if(fNFWMuonsFlag)
+ if((EvTag->GetNumOfFWMuons() < fNFWMuonsMin) || (EvTag->GetNumOfFWMuons() > fNFWMuonsMax))
+ return kFALSE;
+
+ if(fNFWMatchedMuonsFlag)
+ if((EvTag->GetNumOfFWMatchedMuons() < fNFWMatchedMuonsMin) || (EvTag->GetNumOfFWMatchedMuons() > fNFWMatchedMuonsMax))
+ return kFALSE;
+
if(fNMuonsFlag)
if((EvTag->GetNumOfMuons() < fNMuonsMin) || (EvTag->GetNumOfMuons() > fNMuonsMax))
return kFALSE;
if(fHBTRadiiFlag)
if((EvTag->GetHBTRadii() < fHBTRadiiMin) || (EvTag->GetHBTRadii() > fHBTRadiiMax))
return kFALSE;
+
+ if (fFiredTriggerClassFlag) {
+ if (fActiveTriggerClasses.Length() == 0) {
+ AliWarning("Attempt to select Trigger classes but Active trigger classes not set in AliEventTagCuts. Cannot make the selection on Fired Trigger classes");
+ }
+ else {
+ TObjArray *tClasses = fFiredTriggerClass.Tokenize(" ");
+ Bool_t tTrig = kFALSE;
+
+ for (int itrig=0; itrig<tClasses->GetEntries(); itrig++)
+ if (EvTag->GetFiredTriggerClasses(fActiveTriggerClasses).Contains(((TObjString *) tClasses->At(itrig))->GetString()))
+ tTrig = kTRUE;
+
+ tClasses->Delete();
+ delete tClasses;
+
+ if (!tTrig)
+ return kFALSE;
+ }
+ }
return kTRUE;
}
+
+Bool_t AliEventTagCuts::IsAccepted(const AliEventTag *EvTag) const
+{
+ //Returns true if the event is accepted otherwise false.
+ if(fEventTypeFlag)
+ if(EvTag->GetEventType() != fEventType)
+ return kFALSE;
+
+ if(fNumberOfFiredChipsLayer1Flag)
+ if((EvTag->GetNumberOfFiredChipsLayer1() < fNumberOfFiredChipsLayer1Min) || (EvTag->GetNumberOfFiredChipsLayer1() > fNumberOfFiredChipsLayer1Max))
+ return kFALSE;
+
+ if(fNumberOfFiredChipsLayer2Flag)
+ if((EvTag->GetNumberOfFiredChipsLayer2() < fNumberOfFiredChipsLayer2Min) || (EvTag->GetNumberOfFiredChipsLayer2() > fNumberOfFiredChipsLayer2Max))
+ return kFALSE;
+
+ if(fNumberOfSPDTrackletsFlag)
+ if((EvTag->GetNumberOfSPDTracklets() < fNumberOfSPDTrackletsMin) || (EvTag->GetNumberOfSPDTracklets() > fNumberOfSPDTrackletsMax))
+ return kFALSE;
+
+ if(fPeriodNumberFlag)
+ if((EvTag->GetPeriodNumber() < fPeriodNumberMin) || (EvTag->GetPeriodNumber() > fPeriodNumberMax))
+ return kFALSE;
+
+ if(fOrbitNumberFlag)
+ if((EvTag->GetOrbitNumber() < fOrbitNumberMin) || (EvTag->GetOrbitNumber() > fOrbitNumberMax))
+ return kFALSE;
+
+ if(fBunchCrossNumberFlag)
+ if((EvTag->GetBunchCrossNumber() < fBunchCrossNumberMin) || (EvTag->GetBunchCrossNumber() > fBunchCrossNumberMax))
+ return kFALSE;
+
+
+ if(fEtaFlag)
+ if((EvTag->GetEtaMaxPt() < fEtaMin) || (EvTag->GetEtaMaxPt() > fEtaMax))
+ return kFALSE;
+
+ if(fPhiFlag)
+ if((EvTag->GetPhiMaxPt() < fPhiMin) || (EvTag->GetPhiMaxPt() > fPhiMax))
+ return kFALSE;
+
+ if(fVzFlag)
+ if((EvTag->GetVertexZ() < fVzMin) || (EvTag->GetVertexZ() > fVzMax))
+ return kFALSE;
+
+ if(fVyFlag)
+ if((EvTag->GetVertexY() < fVyMin) || (EvTag->GetVertexY() > fVyMax))
+ return kFALSE;
+
+ if(fVxFlag)
+ if((EvTag->GetVertexX() < fVxMin) || (EvTag->GetVertexX() > fVxMax))
+ return kFALSE;
+
+ if(fNParticipantsFlag)
+ if((EvTag->GetNumOfParticipants() < fNParticipantsMin) || (EvTag->GetNumOfParticipants() > fNParticipantsMax))
+ return kFALSE;
+
+ if(fImpactParamFlag)
+ if((EvTag->GetImpactParameter() < fImpactParamMin) || (EvTag->GetImpactParameter() > fImpactParamMax))
+ return kFALSE;
+
+ if(fPVFlag)
+ if((EvTag->GetVertexFlag() != fPrimaryVertexFlag))
+ return kFALSE;
+
+ if(fPVzErrorFlag)
+ if((EvTag->GetVertexZError() < fPrimaryVertexZErrorMin) || (EvTag->GetVertexZError() > fPrimaryVertexZErrorMax))
+ return kFALSE;
+ if(fTriggerMaskFlag)
+ if((EvTag->GetTriggerMask() & fTriggerMask) != fTriggerMask)
+ return kFALSE;
+ if(fTriggerClusterFlag)
+ if((EvTag->GetTriggerCluster() != fTriggerCluster))
+ return kFALSE;
+
+ if(fZDCNeutron1EnergyFlag)
+ if((EvTag->GetZDCNeutron1Energy() < fZDCNeutron1EnergyMin) || (EvTag->GetZDCNeutron1Energy() > fZDCNeutron1EnergyMax))
+ return kFALSE;
+
+ if(fZDCProton1EnergyFlag)
+ if((EvTag->GetZDCProton1Energy() < fZDCProton1EnergyMin) || (EvTag->GetZDCProton1Energy() > fZDCProton1EnergyMax))
+ return kFALSE;
+
+ if(fZDCNeutron2EnergyFlag)
+ if((EvTag->GetZDCNeutron2Energy() < fZDCNeutron2EnergyMin) || (EvTag->GetZDCNeutron2Energy() > fZDCNeutron2EnergyMax))
+ return kFALSE;
+
+ if(fZDCProton2EnergyFlag)
+ if((EvTag->GetZDCProton2Energy() < fZDCProton2EnergyMin) || (EvTag->GetZDCProton2Energy() > fZDCProton2EnergyMax))
+ return kFALSE;
+
+ if(fZDCEMEnergyFlag)
+ if((EvTag->GetZDCEMEnergy(1) < fZDCEMEnergyMin) || (EvTag->GetZDCEMEnergy(1) > fZDCEMEnergyMax))
+ return kFALSE;
+
+ if(fT0VertexZFlag)
+ if((EvTag->GetT0VertexZ() < fT0VertexZMin) || (EvTag->GetT0VertexZ() > fT0VertexZMax))
+ return kFALSE;
+
+ if(fMultFlag)
+ if((EvTag->GetNumOfTracks() < fMultMin) || (EvTag->GetNumOfTracks() > fMultMax))
+ return kFALSE;
+
+ if(fPosMultFlag)
+ if((EvTag->GetNumOfPosTracks() < fPosMultMin) || (EvTag->GetNumOfPosTracks() > fPosMultMax))
+ return kFALSE;
+
+ if(fNegMultFlag)
+ if((EvTag->GetNumOfNegTracks() < fNegMultMin) || (EvTag->GetNumOfNegTracks() > fNegMultMax))
+ return kFALSE;
+
+ if(fNeutrMultFlag)
+ if((EvTag->GetNumOfNeutrTracks() < fNeutrMultMin) || (EvTag->GetNumOfNeutrTracks() > fNeutrMultMax))
+ return kFALSE;
+
+ if(fNV0sFlag)
+ if((EvTag->GetNumOfV0s() < fNV0sMin) || (EvTag->GetNumOfV0s() > fNV0sMax))
+ return kFALSE;
+
+ if(fNCascadesFlag)
+ if((EvTag->GetNumOfCascades() < fNCascadesMin) || (EvTag->GetNumOfCascades() > fNCascadesMax))
+ return kFALSE;
+
+ if(fNKinksFlag)
+ if((EvTag->GetNumOfKinks() < fNKinksMin) || (EvTag->GetNumOfKinks() > fNKinksMax))
+ return kFALSE;
+
+
+ if(fNPMDTracksFlag)
+ if((EvTag->GetNumOfPMDTracks() < fNPMDTracksMin) || (EvTag->GetNumOfPMDTracks() > fNPMDTracksMax))
+ return kFALSE;
+ if(fNFMDTracksFlag)
+ if((EvTag->GetNumOfFMDTracks() < fNFMDTracksMin) || (EvTag->GetNumOfFMDTracks() > fNFMDTracksMax))
+ return kFALSE;
+ if(fNPHOSClustersFlag)
+ if((EvTag->GetNumOfPHOSClusters() < fNPHOSClustersMin) || (EvTag->GetNumOfPHOSClusters() > fNPHOSClustersMax))
+ return kFALSE;
+ if(fNEMCALClustersFlag)
+ if((EvTag->GetNumOfEMCALClusters() < fNEMCALClustersMin) || (EvTag->GetNumOfEMCALClusters() > fNEMCALClustersMax))
+ return kFALSE;
+ if(fNJetCandidatesFlag)
+ if((EvTag->GetNumOfJetCandidates() < fNJetCandidatesMin) || (EvTag->GetNumOfJetCandidates() > fNJetCandidatesMax))
+ return kFALSE;
+
+
+ if(fTopJetEnergyMinFlag)
+ if((EvTag->GetMaxJetEnergy() < fTopJetEnergyMin))
+ return kFALSE;
+
+ if(fNHardPhotonCandidatesFlag)
+ if((EvTag->GetNumOfHardPhotonsCandidates() < fNHardPhotonCandidatesMin) || (EvTag->GetNumOfHardPhotonsCandidates() > fNHardPhotonCandidatesMax))
+ return kFALSE;
+
+ if(fTopNeutralEnergyMinFlag)
+ if((EvTag->GetMaxNeutralEnergy() < fTopNeutralEnergyMin))
+ return kFALSE;
+
+ if(fNChargedAbove1GeVFlag)
+ if((EvTag->GetNumOfChargedAbove1GeV() < fNChargedAbove1GeVMin) || (EvTag->GetNumOfChargedAbove1GeV() > fNChargedAbove1GeVMax))
+ return kFALSE;
+
+ if(fNChargedAbove3GeVFlag)
+ if((EvTag->GetNumOfChargedAbove3GeV() < fNChargedAbove3GeVMin) || (EvTag->GetNumOfChargedAbove3GeV() > fNChargedAbove3GeVMax))
+ return kFALSE;
+
+ if(fNChargedAbove10GeVFlag)
+ if((EvTag->GetNumOfChargedAbove10GeV() < fNChargedAbove10GeVMin) || (EvTag->GetNumOfChargedAbove10GeV() > fNChargedAbove10GeVMax))
+ return kFALSE;
+
+ if(fNMuonsAbove1GeVFlag)
+ if((EvTag->GetNumOfMuonsAbove1GeV() < fNMuonsAbove1GeVMin) || (EvTag->GetNumOfMuonsAbove1GeV() > fNMuonsAbove1GeVMax))
+ return kFALSE;
+
+ if(fNMuonsAbove3GeVFlag)
+ if((EvTag->GetNumOfMuonsAbove3GeV() < fNMuonsAbove3GeVMin) || (EvTag->GetNumOfMuonsAbove3GeV() > fNMuonsAbove3GeVMax))
+ return kFALSE;
+
+ if(fNMuonsAbove10GeVFlag)
+ if((EvTag->GetNumOfMuonsAbove10GeV() < fNMuonsAbove10GeVMin) || (EvTag->GetNumOfMuonsAbove10GeV() > fNMuonsAbove10GeVMax))
+ return kFALSE;
+
+ if(fNElectronsAbove1GeVFlag)
+ if((EvTag->GetNumOfElectronsAbove1GeV() < fNElectronsAbove1GeVMin) || (EvTag->GetNumOfElectronsAbove1GeV() > fNElectronsAbove1GeVMax))
+ return kFALSE;
+
+ if(fNElectronsAbove3GeVFlag)
+ if((EvTag->GetNumOfElectronsAbove3GeV() < fNElectronsAbove3GeVMin) || (EvTag->GetNumOfElectronsAbove3GeV() > fNElectronsAbove3GeVMax))
+ return kFALSE;
+
+ if(fNElectronsAbove10GeVFlag)
+ if((EvTag->GetNumOfElectronsAbove10GeV() < fNElectronsAbove10GeVMin) || (EvTag->GetNumOfElectronsAbove10GeV() > fNElectronsAbove10GeVMax))
+ return kFALSE;
+
+ if(fNElectronsFlag)
+ if((EvTag->GetNumOfElectrons() < fNElectronsMin) || (EvTag->GetNumOfElectrons() > fNElectronsMax))
+ return kFALSE;
+
+ if(fNFWMuonsFlag)
+ if((EvTag->GetNumOfFWMuons() < fNFWMuonsMin) || (EvTag->GetNumOfFWMuons() > fNFWMuonsMax))
+ return kFALSE;
+
+ if(fNFWMatchedMuonsFlag)
+ if((EvTag->GetNumOfFWMatchedMuons() < fNFWMatchedMuonsMin) || (EvTag->GetNumOfFWMatchedMuons() > fNFWMatchedMuonsMax))
+ return kFALSE;
+
+ if(fNMuonsFlag)
+ if((EvTag->GetNumOfMuons() < fNMuonsMin) || (EvTag->GetNumOfMuons() > fNMuonsMax))
+ return kFALSE;
+
+ if(fNPionsFlag)
+ if((EvTag->GetNumOfPions() < fNPionsMin) || (EvTag->GetNumOfPions() > fNPionsMax))
+ return kFALSE;
+
+ if(fNKaonsFlag)
+ if((EvTag->GetNumOfKaons() < fNKaonsMin) || (EvTag->GetNumOfKaons() > fNKaonsMax))
+ return kFALSE;
+
+ if(fNProtonsFlag)
+ if((EvTag->GetNumOfProtons() < fNProtonsMin) || (EvTag->GetNumOfProtons() > fNProtonsMax))
+ return kFALSE;
+
+ if(fNLambdasFlag)
+ if((EvTag->GetNumOfLambdas() < fNLambdasMin) || (EvTag->GetNumOfLambdas() > fNLambdasMax))
+ return kFALSE;
+
+ if(fNPhotonFlag)
+ if((EvTag->GetNumOfPhotons() < fNPhotonsMin) || (EvTag->GetNumOfPhotons() > fNPhotonsMax))
+ return kFALSE;
+
+ if(fNPi0sFlag)
+ if((EvTag->GetNumOfPi0s() < fNPi0sMin) || (EvTag->GetNumOfPi0s() > fNPi0sMax))
+ return kFALSE;
+
+ if(fNNeutronsFlag)
+ if((EvTag->GetNumOfNeutrons() < fNNeutronsMin) || (EvTag->GetNumOfNeutrons() > fNNeutronsMax))
+ return kFALSE;
+
+ if(fNKaon0sFlag)
+ if((EvTag->GetNumOfKaon0s() < fNKaon0sMin) || (EvTag->GetNumOfKaon0s() > fNKaon0sMax))
+ return kFALSE;
+
+ if(fTotalPFlag)
+ if((EvTag->GetTotalMomentum() < fTotalPMin) || (EvTag->GetTotalMomentum() > fTotalPMax))
+ return kFALSE;
+
+ if(fMeanPtFlag)
+ if((EvTag->GetMeanPt() < fMeanPtMin) || (EvTag->GetMeanPt() > fMeanPtMax))
+ return kFALSE;
+
+ if(fTopPtMinFlag)
+ if((EvTag->GetMaxPt() < fTopPtMin))
+ return kFALSE;
+
+ if(fTotalNeutralPFlag)
+ if((EvTag->GetNeutralTotalMomentum() < fTotalNeutralPMin) || (EvTag->GetNeutralTotalMomentum() > fTotalNeutralPMax))
+ return kFALSE;
+
+ if(fMeanNeutralPtFlag)
+ if((EvTag->GetNeutralMeanPt() < fMeanNeutralPtMin) || (EvTag->GetNeutralMeanPt() >fMeanNeutralPtMax ))
+ return kFALSE;
+
+ if(fTopNeutralPtMinFlag)
+ if((EvTag->GetNeutralMaxPt() < fTopNeutralPtMin))
+ return kFALSE;
+
+ if(fEventPlaneAngleFlag)
+ if((EvTag->GetEventPlaneAngle() < fEventPlaneAngleMin) || (EvTag->GetEventPlaneAngle() > fEventPlaneAngleMax))
+ return kFALSE;
+
+ if(fHBTRadiiFlag)
+ if((EvTag->GetHBTRadii() < fHBTRadiiMin) || (EvTag->GetHBTRadii() > fHBTRadiiMax))
+ return kFALSE;
+
+ if (fFiredTriggerClassFlag) {
+ if (fActiveTriggerClasses.Length() == 0) {
+ AliWarning("Attempt to select Trigger classes but Active trigger classes not set in AliEventTagCuts. Cannot make the selection on Fired Trigger classes");
+ }
+ else {
+ TObjArray *tClasses = fFiredTriggerClass.Tokenize(" ");
+ Bool_t tTrig = kFALSE;
+
+ for (int itrig=0; itrig<tClasses->GetEntries(); itrig++)
+ if (EvTag->GetFiredTriggerClasses(fActiveTriggerClasses).Contains(((TObjString *) tClasses->At(itrig))->GetString()))
+ tTrig = kTRUE;
+
+ tClasses->Delete();
+ delete tClasses;
+
+ if (!tTrig)
+ return kFALSE;
+ }
+ }
+
+ return kTRUE;
+
+}