We have added the possibility to perform an
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Oct 2008 10:06:55 +0000 (10:06 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Oct 2008 10:06:55 +0000 (10:06 +0000)
event tag cut to select muons in the dimuon spectrometer.
In fact the setter AliEventTagCuts::SetNMuonRange(), which was already
available in aliroot, is based on the muon selection done according to the
global PID, therefore it counts muons both in the central barrel and in the
dimuon spectrometer.
To select only the forward muons, we have implemented the setter
SetNFWMuonRange(). The selection of the muons, in this case, is based on the method AliAODTracks::IsMuonTrack().
(Roberta Arnaldi, Enrico Scomparini)

STEER/AliAODTagCreator.cxx
STEER/AliEventTag.cxx
STEER/AliEventTag.h
STEER/AliEventTagCuts.cxx
STEER/AliEventTagCuts.h

index b5c8f20..fe8dd23 100644 (file)
@@ -388,7 +388,7 @@ void AliAODTagCreator::FillEventTag(AliAODEvent* aod, AliEventTag* evTag)
     Int_t   nPos = 0, nNeg = 0, nNeutr =0;
     Int_t   nKinks = 0, nV0s = 0, nCascades = 0;
     Int_t   nK0s = 0, nNeutrons = 0, nPi0s = 0, nGamas = 0;
-    Int_t   nProtons = 0,  nKaons = 0, nPions = 0, nMuons = 0, nElectrons = 0;
+    Int_t   nProtons = 0,  nKaons = 0, nPions = 0, nMuons = 0, nElectrons = 0, nFWMuons = 0;
     Int_t   nCh1GeV = 0, nCh3GeV = 0, nCh10GeV = 0;
     Int_t   nMu1GeV = 0, nMu3GeV = 0, nMu10GeV = 0;
     Int_t   nEl1GeV = 0, nEl3GeV = 0, nEl10GeV = 0;
@@ -450,10 +450,12 @@ void AliAODTagCreator::FillEventTag(AliAODEvent* aod, AliEventTag* evTag)
            if(fPt > fHighPtCut) nEl3GeV++;
            if(fPt > fVeryHighPtCut) nEl10GeV++;
        }
-           
        totalP += track->P();
        meanPt += fPt;
        ntrack++;
+       // forward muons (in the dimuon spectrometer)
+       if(track->IsMuonTrack()) nFWMuons++;   
+                                 
     }//track loop
     //
     // Fill the event tags  
@@ -474,6 +476,7 @@ void AliAODTagCreator::FillEventTag(AliAODEvent* aod, AliEventTag* evTag)
     evTag->SetNumOfKaons(nKaons);
     evTag->SetNumOfPions(nPions);
     evTag->SetNumOfMuons(nMuons);
+    evTag->SetNumOfFWMuons(nFWMuons);
     evTag->SetNumOfElectrons(nElectrons);
     evTag->SetNumOfPhotons(nGamas);
     evTag->SetNumOfPi0s(nPi0s);
index d696e67..514c6b6 100644 (file)
@@ -73,6 +73,7 @@ ClassImp(AliEventTag)
     fNumberOfElectronsAbove3GeV(-10),
     fNumberOfElectronsAbove10GeV(-10),
     fNumberOfElectrons(-10),
+    fNumberOfFWMuons(-10),
     fNumberOfMuons(-10),
     fNumberOfPions(-10),
     fNumberOfKaons(-10),
@@ -145,6 +146,7 @@ AliEventTag::AliEventTag(const AliEventTag & evTag) :
   fNumberOfElectronsAbove3GeV(evTag.fNumberOfElectronsAbove3GeV),
   fNumberOfElectronsAbove10GeV(evTag.fNumberOfElectronsAbove10GeV),
   fNumberOfElectrons(evTag.fNumberOfElectrons),
+  fNumberOfFWMuons(evTag.fNumberOfFWMuons),
   fNumberOfMuons(evTag.fNumberOfMuons),
   fNumberOfPions(evTag.fNumberOfPions),
   fNumberOfKaons(evTag.fNumberOfKaons),
@@ -219,6 +221,7 @@ AliEventTag & AliEventTag::operator=(const AliEventTag &evTag) {
     SetNumOfElectronsAbove3GeV(evTag.GetNumOfElectronsAbove3GeV());
     SetNumOfElectronsAbove10GeV(evTag.GetNumOfElectronsAbove10GeV());
     SetNumOfElectrons(evTag.GetNumOfElectrons());
+    SetNumOfFWMuons(evTag.GetNumOfFWMuons());
     SetNumOfMuons(evTag.GetNumOfMuons());
     SetNumOfPions(evTag.GetNumOfPions());
     SetNumOfKaons(evTag.GetNumOfKaons());
index 54cc73d..2c756bd 100644 (file)
@@ -74,6 +74,7 @@ class AliEventTag : public TObject {
   void SetNumOfElectronsAbove3GeV(Int_t i) {fNumberOfElectronsAbove3GeV = i;}
   void SetNumOfElectronsAbove10GeV(Int_t i) {fNumberOfElectronsAbove10GeV = i;}
   void SetNumOfElectrons(Int_t Ptr) {fNumberOfElectrons = Ptr;}
+  void SetNumOfFWMuons(Int_t Ptr) {fNumberOfFWMuons = Ptr;}
   void SetNumOfMuons(Int_t Ptr) {fNumberOfMuons = Ptr;}
   void SetNumOfPions(Int_t Ptr) {fNumberOfPions = Ptr;}
   void SetNumOfKaons(Int_t Ptr) {fNumberOfKaons = Ptr;}
@@ -140,6 +141,7 @@ class AliEventTag : public TObject {
   Int_t       GetNumOfElectronsAbove3GeV() const {return fNumberOfElectronsAbove3GeV;}
   Int_t       GetNumOfElectronsAbove10GeV() const {return fNumberOfElectronsAbove10GeV;}
   Int_t       GetNumOfElectrons() const {return fNumberOfElectrons;}
+  Int_t       GetNumOfFWMuons() const {return fNumberOfFWMuons;}
   Int_t       GetNumOfMuons() const {return fNumberOfMuons;}
   Int_t       GetNumOfPions() const {return fNumberOfPions;}
   Int_t       GetNumOfKaons() const {return fNumberOfKaons;}
@@ -207,6 +209,7 @@ class AliEventTag : public TObject {
   Int_t     fNumberOfElectronsAbove3GeV;    //Number of electrons above 3 GeV/c
   Int_t     fNumberOfElectronsAbove10GeV;   //Number of electrons above 10 GeV/c
   Int_t     fNumberOfElectrons;                    //Number of electrons
+  Int_t     fNumberOfFWMuons;              //Number of forward muons
   Int_t     fNumberOfMuons;                //Number of muons
   Int_t     fNumberOfPions;                //Number of pions
   Int_t     fNumberOfKaons;                //Number of kaons
index c446a9a..fb66682 100644 (file)
@@ -117,6 +117,8 @@ AliEventTagCuts::AliEventTagCuts() :
   fNElectronsAbove10GeVFlag(kFALSE),
   fNElectronsMin(-1), fNElectronsMax(100000),
   fNElectronsFlag(kFALSE),
+  fNFWMuonsMin(-1), fNFWMuonsMax(100000),
+  fNFWMuonsFlag(kFALSE),
   fNMuonsMin(-1), fNMuonsMax(100000),
   fNMuonsFlag(kFALSE),
   fNPionsMin(-1), fNPionsMax(100000),
@@ -209,6 +211,7 @@ void AliEventTagCuts::Reset() {
   fNElectronsAbove3GeVFlag = kFALSE;
   fNElectronsAbove10GeVFlag = kFALSE;
   fNElectronsFlag = kFALSE;
+  fNFWMuonsFlag = kFALSE;
   fNMuonsFlag = kFALSE;
   fNPionsFlag = kFALSE;
   fNKaonsFlag = kFALSE;
@@ -271,6 +274,7 @@ void AliEventTagCuts::Reset() {
   fNElectronsAbove3GeVMin = -1; fNElectronsAbove3GeVMax = 100000;
   fNElectronsAbove10GeVMin = -1; fNElectronsAbove10GeVMax = 100000;
   fNElectronsMin = -1; fNElectronsMax = 100000;
+  fNFWMuonsMin = -1; fNFWMuonsMax = 100000;
   fNMuonsMin = -1; fNMuonsMax = 100000;
   fNPionsMin = -1; fNPionsMax = 100000;
   fNKaonsMin = -1; fNKaonsMax = 100000;
@@ -646,6 +650,15 @@ void AliEventTagCuts::SetNElectronRange(Int_t low, Int_t 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::SetNMuonRange(Int_t low, Int_t high) {
   //Sets the muon multiplicity range
   //and the corresponding flag to kTRUE if the cut is used.
@@ -951,6 +964,10 @@ 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(fNMuonsFlag)
     if((EvTag->GetNumOfMuons() < fNMuonsMin) || (EvTag->GetNumOfMuons() > fNMuonsMax))
       return kFALSE; 
index af5a7e9..e2f9ff7 100644 (file)
@@ -70,6 +70,7 @@ class AliEventTagCuts : public TObject {
   void SetNElectronsAbove3GeVRange(Int_t low, Int_t high);
   void SetNElectronsAbove10GeVRange(Int_t low, Int_t high);
   void SetNElectronRange(Int_t low, Int_t high);
+  void SetNFWMuonRange(Int_t low, Int_t high);
   void SetNMuonRange(Int_t low, Int_t high);
   void SetNPionRange(Int_t low, Int_t high);
   void SetNKaonRange(Int_t low, Int_t high);
@@ -179,6 +180,8 @@ class AliEventTagCuts : public TObject {
   Bool_t fNElectronsAbove10GeVFlag;                           // Shows whether this cut is used or not  
   Int_t fNElectronsMin, fNElectronsMax;                       // # of electrons range
   Bool_t fNElectronsFlag;                                     // Shows whether this cut is used or not
+  Int_t fNFWMuonsMin, fNFWMuonsMax;                           // # of forward muons range
+  Bool_t fNFWMuonsFlag;                                       // Shows whether this cut is used or not
   Int_t fNMuonsMin, fNMuonsMax;                               // # of muons range
   Bool_t fNMuonsFlag;                                         // Shows whether this cut is used or not
   Int_t fNPionsMin, fNPionsMax;                               // # of pions range