]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliEventTagCuts.cxx
coverity warnings 15388 10083 10082 fixed
[u/mrichter/AliRoot.git] / STEER / AliEventTagCuts.cxx
index 26a01c6ef801e6bb93f8da4ab83fe64dbe513d59..fcdf77559f8fabf69f4ec31dbea8561471520dc5 100644 (file)
 //   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)
 
@@ -31,12 +34,19 @@ 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),  
@@ -117,6 +127,10 @@ AliEventTagCuts::AliEventTagCuts() :
   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),
@@ -150,7 +164,17 @@ AliEventTagCuts::AliEventTagCuts() :
   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();
@@ -164,9 +188,17 @@ AliEventTagCuts::~AliEventTagCuts() {
 //___________________________________________________________________________
 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;
@@ -209,6 +241,8 @@ void AliEventTagCuts::Reset() {
   fNElectronsAbove3GeVFlag = kFALSE;
   fNElectronsAbove10GeVFlag = kFALSE;
   fNElectronsFlag = kFALSE;
+  fNFWMuonsFlag = kFALSE;
+  fNFWMatchedMuonsFlag = kFALSE;
   fNMuonsFlag = kFALSE;
   fNPionsFlag = kFALSE;
   fNKaonsFlag = kFALSE;
@@ -226,7 +260,19 @@ void AliEventTagCuts::Reset() {
   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;
@@ -271,6 +317,8 @@ void AliEventTagCuts::Reset() {
   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;
@@ -288,6 +336,75 @@ void AliEventTagCuts::Reset() {
   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;
 }
 
 //___________________________________________________________________________
@@ -317,6 +434,23 @@ void AliEventTagCuts::SetPrimaryVertexZRange(Float_t low, Float_t high) {
   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 
@@ -413,7 +547,7 @@ void AliEventTagCuts::SetZDCProton2Range(Float_t low, Float_t high) {
 }
 //___________________________________________________________________________
 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;
@@ -645,6 +779,24 @@ void AliEventTagCuts::SetNElectronRange(Int_t low, Int_t 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
@@ -792,9 +944,359 @@ void AliEventTagCuts::SetHBTRadiiRange(Float_t low, Float_t high) {
   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(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;
+}
+
+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;
@@ -823,10 +1325,10 @@ Bool_t AliEventTagCuts::IsAccepted(AliEventTag *EvTag) const {
     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)
@@ -846,7 +1348,7 @@ Bool_t AliEventTagCuts::IsAccepted(AliEventTag *EvTag) const {
       return kFALSE; 
   
   if(fZDCEMEnergyFlag)
-    if((EvTag->GetZDCEMEnergy() < fZDCEMEnergyMin) || (EvTag->GetZDCEMEnergy() > fZDCEMEnergyMax))
+    if((EvTag->GetZDCEMEnergy(1) < fZDCEMEnergyMin) || (EvTag->GetZDCEMEnergy(1) > fZDCEMEnergyMax))
       return kFALSE; 
   
   if(fT0VertexZFlag)
@@ -951,6 +1453,14 @@ Bool_t AliEventTagCuts::IsAccepted(AliEventTag *EvTag) const {
     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; 
@@ -1018,6 +1528,27 @@ Bool_t AliEventTagCuts::IsAccepted(AliEventTag *EvTag) const {
   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;
+  
 }