fc32fa12f1e778273385378950972c8017d44cbe
[u/mrichter/AliRoot.git] / ANALYSIS / AliEventCut.cxx
1 #include "AliEventCut.h"
2 //________________________________
3 ///////////////////////////////////////////////////////////
4 //
5 // class AliRunAnalysis
6 //
7 //
8 //
9 //
10 ///////////////////////////////////////////////////////////
11
12 #include <TObjArray.h>
13 //#include <TIter.h>
14
15 #include "AliEventBaseCut.h"
16
17 ClassImp(AliEventCut)
18
19
20 AliEventCut::AliEventCut():
21  fBaseCuts(10)
22 {
23 //costructor
24
25 }
26 /*********************************************************/
27 AliEventCut::AliEventCut(const AliEventCut& in):
28  TObject(in),
29  fBaseCuts(in.fBaseCuts)
30 {
31   //cpy ctor
32   fBaseCuts.SetOwner(kTRUE);
33 }
34 /*********************************************************/
35
36 AliEventCut::~AliEventCut()
37 {
38 //costructor
39 }
40
41 /*********************************************************/
42
43 Bool_t AliEventCut::Rejected(AliAOD* aod) const
44 {
45   //returns kTRUE if rejected
46   if (aod == 0x0)
47    {
48      Error("Pass","Pointer to AOD is NULL. Not passed the cut");
49      return kFALSE;
50    }
51    
52   TIter iter(&fBaseCuts);
53   AliEventBaseCut* becut;
54   while (( becut = (AliEventBaseCut*)iter() ))
55    {
56      if (becut->Rejected(aod)) return kTRUE;
57    }
58   return kFALSE;
59 }
60 /*********************************************************/
61 void AliEventCut::AddBasePartCut(AliEventBaseCut* ebcut)
62 {
63 //Adds a base cut
64  if (ebcut == 0x0)
65   {
66     Error("AddBasePartCut","Pointer to base cut is NULL");
67     return;
68   }
69  
70  if (ebcut->GetProperty() != AliEventBaseCut::kNone)
71   {
72     if (FindCut(ebcut->GetProperty()))
73      {
74        Warning("AddBasePartCut","Cut with this property is already in the list of base cuts");
75      }
76   }  
77   
78  fBaseCuts.Add(ebcut->Clone());
79  
80 }
81 /*********************************************************/
82
83 AliEventBaseCut* AliEventCut::FindCut(AliEventBaseCut::EEventCutProperty prop)
84 {
85 //Finds and returns pointer to the cut with given property
86  Int_t n = fBaseCuts.GetEntries();
87  for (Int_t i = 0; i<n; i++)
88   {
89     AliEventBaseCut* bcut = (AliEventBaseCut*)fBaseCuts.At(i);
90     if (bcut->GetProperty() == prop)
91        return bcut; //we found the cut we were searching for
92   }
93
94  return 0x0; //we did not found this cut
95
96 }
97 /*********************************************************/
98
99 void AliEventCut::SetNChargedRange(Int_t min,Int_t max,Double_t etamin,Double_t etamax)
100 {
101  //Sets renge of number of charged particles
102   AliNChargedCut* cut = dynamic_cast<AliNChargedCut*>(FindCut(AliEventBaseCut::kNChargedCut));
103   if(cut) 
104    { 
105      cut->SetRange(min,max);
106      cut->SetEtaRange(etamin,etamax);
107    }  
108   else fBaseCuts.Add(new AliNChargedCut(min,max,etamin,etamax));
109 }
110
111 /*********************************************************/
112 /*********************************************************/
113 /*********************************************************/
114
115 ClassImp(AliEventEmptyCut)