#ifndef ALIANALYSISMUMUCUTELEMENT_H
#define ALIANALYSISMUMUCUTELEMENT_H
#include "TObject.h"
#include "TString.h"
#include <vector>
class TMethodCall;
class AliVEvent;
class AliInputEventHandler;
class AliVParticle;
class AliAnalysisMuMuCutElement : public TObject
{
public:
enum ECutType
{
kEvent=0,
kTrack=1,
kTrackPair=2,
kTriggerClass=3,
kAny=4
};
static const char* CutTypeName(ECutType type);
AliAnalysisMuMuCutElement();
AliAnalysisMuMuCutElement(ECutType expectedType,
TObject& cutObject,
const char* cutMethodName,
const char* cutMethodPrototype,
const char* defaultParameters);
virtual ~AliAnalysisMuMuCutElement();
virtual Bool_t IsValid() const { return (fCutMethod != 0x0); }
const char* GetName() const { return fName.Data(); }
virtual Bool_t Pass(const AliVEvent& event) const;
virtual Bool_t Pass(const AliInputEventHandler& eventHandler) const;
virtual Bool_t Pass(const AliVParticle& particle) const;
virtual Bool_t Pass(const AliVParticle& p1, const AliVParticle& p2) const;
virtual Bool_t Pass(const TString& firedTriggerClasses, TString& acceptedTriggerClasses,
UInt_t L0, UInt_t L1, UInt_t L2) const;
virtual void Print(Option_t* opt="") const;
Bool_t IsEventCutter() const { return fIsEventCutter; }
Bool_t IsEventHandlerCutter() const { return fIsEventHandlerCutter; }
Bool_t IsTrackCutter() const { return fIsTrackCutter; }
Bool_t IsTrackPairCutter() const { return fIsTrackPairCutter; }
Bool_t IsTriggerClassCutter() const { return fIsTriggerClassCutter; }
TObject* GetCutObject() const { return fCutObject; }
const Long_t* GetCallParams() const { return &fCallParams[0]; }
const char* GetCallMethodName() const;
const char* GetCallMethodProto() const;
Bool_t IsEqual(const TObject* obj) const;
private:
void Init(ECutType type=kAny) const;
Bool_t CallCutMethod(Long_t p) const;
Bool_t CallCutMethod(Long_t p1, Long_t p2) const;
Int_t CountOccurences(const TString& prototype, const char* search) const;
AliAnalysisMuMuCutElement(const AliAnalysisMuMuCutElement& rhs);
AliAnalysisMuMuCutElement& operator=(const AliAnalysisMuMuCutElement& rhs);
protected:
TString fName;
mutable Bool_t fIsEventCutter;
mutable Bool_t fIsEventHandlerCutter;
mutable Bool_t fIsTrackCutter;
mutable Bool_t fIsTrackPairCutter;
mutable Bool_t fIsTriggerClassCutter;
private:
TObject* fCutObject;
TString fCutMethodName;
TString fCutMethodPrototype;
TString fDefaultParameters;
mutable Int_t fNofParams;
mutable TMethodCall* fCutMethod;
mutable std::vector<Long_t> fCallParams;
mutable std::vector<Double_t> fDoubleParams;
ClassDef(AliAnalysisMuMuCutElement,1)
};
class AliAnalysisMuMuCutElementBar : public AliAnalysisMuMuCutElement
{
public:
AliAnalysisMuMuCutElementBar();
AliAnalysisMuMuCutElementBar(const AliAnalysisMuMuCutElement& ce);
virtual ~AliAnalysisMuMuCutElementBar();
Bool_t IsValid() const { return fCutElement && fCutElement->IsValid(); }
Bool_t Pass(const AliVEvent& event) const { return !fCutElement->Pass(event); }
Bool_t Pass(const AliInputEventHandler& eventHandler) const { return !fCutElement->Pass(eventHandler); }
Bool_t Pass(const AliVParticle& particle) const { return !fCutElement->Pass(particle); }
Bool_t Pass(const AliVParticle& p1, const AliVParticle& p2) const { return !fCutElement->Pass(p1,p2); }
Bool_t Pass(const TString& firedTriggerClasses, TString& acceptedTriggerClasses,
UInt_t L0, UInt_t L1, UInt_t L2) const
{ return fCutElement->Pass(firedTriggerClasses,acceptedTriggerClasses,L0,L1,L2); }
void Print(Option_t* opt="") const;
private:
AliAnalysisMuMuCutElementBar(const AliAnalysisMuMuCutElementBar& rhs);
AliAnalysisMuMuCutElementBar& operator=(const AliAnalysisMuMuCutElementBar& rhs);
const AliAnalysisMuMuCutElement* fCutElement;
ClassDef(AliAnalysisMuMuCutElementBar,1)
};
#endif
AliAnalysisMuMuCutElement.h:1 AliAnalysisMuMuCutElement.h:2 AliAnalysisMuMuCutElement.h:3 AliAnalysisMuMuCutElement.h:4 AliAnalysisMuMuCutElement.h:5 AliAnalysisMuMuCutElement.h:6 AliAnalysisMuMuCutElement.h:7 AliAnalysisMuMuCutElement.h:8 AliAnalysisMuMuCutElement.h:9 AliAnalysisMuMuCutElement.h:10 AliAnalysisMuMuCutElement.h:11 AliAnalysisMuMuCutElement.h:12 AliAnalysisMuMuCutElement.h:13 AliAnalysisMuMuCutElement.h:14 AliAnalysisMuMuCutElement.h:15 AliAnalysisMuMuCutElement.h:16 AliAnalysisMuMuCutElement.h:17 AliAnalysisMuMuCutElement.h:18 AliAnalysisMuMuCutElement.h:19 AliAnalysisMuMuCutElement.h:20 AliAnalysisMuMuCutElement.h:21 AliAnalysisMuMuCutElement.h:22 AliAnalysisMuMuCutElement.h:23 AliAnalysisMuMuCutElement.h:24 AliAnalysisMuMuCutElement.h:25 AliAnalysisMuMuCutElement.h:26 AliAnalysisMuMuCutElement.h:27 AliAnalysisMuMuCutElement.h:28 AliAnalysisMuMuCutElement.h:29 AliAnalysisMuMuCutElement.h:30 AliAnalysisMuMuCutElement.h:31 AliAnalysisMuMuCutElement.h:32 AliAnalysisMuMuCutElement.h:33 AliAnalysisMuMuCutElement.h:34 AliAnalysisMuMuCutElement.h:35 AliAnalysisMuMuCutElement.h:36 AliAnalysisMuMuCutElement.h:37 AliAnalysisMuMuCutElement.h:38 AliAnalysisMuMuCutElement.h:39 AliAnalysisMuMuCutElement.h:40 AliAnalysisMuMuCutElement.h:41 AliAnalysisMuMuCutElement.h:42 AliAnalysisMuMuCutElement.h:43 AliAnalysisMuMuCutElement.h:44 AliAnalysisMuMuCutElement.h:45 AliAnalysisMuMuCutElement.h:46 AliAnalysisMuMuCutElement.h:47 AliAnalysisMuMuCutElement.h:48 AliAnalysisMuMuCutElement.h:49 AliAnalysisMuMuCutElement.h:50 AliAnalysisMuMuCutElement.h:51 AliAnalysisMuMuCutElement.h:52 AliAnalysisMuMuCutElement.h:53 AliAnalysisMuMuCutElement.h:54 AliAnalysisMuMuCutElement.h:55 AliAnalysisMuMuCutElement.h:56 AliAnalysisMuMuCutElement.h:57 AliAnalysisMuMuCutElement.h:58 AliAnalysisMuMuCutElement.h:59 AliAnalysisMuMuCutElement.h:60 AliAnalysisMuMuCutElement.h:61 AliAnalysisMuMuCutElement.h:62 AliAnalysisMuMuCutElement.h:63 AliAnalysisMuMuCutElement.h:64 AliAnalysisMuMuCutElement.h:65 AliAnalysisMuMuCutElement.h:66 AliAnalysisMuMuCutElement.h:67 AliAnalysisMuMuCutElement.h:68 AliAnalysisMuMuCutElement.h:69 AliAnalysisMuMuCutElement.h:70 AliAnalysisMuMuCutElement.h:71 AliAnalysisMuMuCutElement.h:72 AliAnalysisMuMuCutElement.h:73 AliAnalysisMuMuCutElement.h:74 AliAnalysisMuMuCutElement.h:75 AliAnalysisMuMuCutElement.h:76 AliAnalysisMuMuCutElement.h:77 AliAnalysisMuMuCutElement.h:78 AliAnalysisMuMuCutElement.h:79 AliAnalysisMuMuCutElement.h:80 AliAnalysisMuMuCutElement.h:81 AliAnalysisMuMuCutElement.h:82 AliAnalysisMuMuCutElement.h:83 AliAnalysisMuMuCutElement.h:84 AliAnalysisMuMuCutElement.h:85 AliAnalysisMuMuCutElement.h:86 AliAnalysisMuMuCutElement.h:87 AliAnalysisMuMuCutElement.h:88 AliAnalysisMuMuCutElement.h:89 AliAnalysisMuMuCutElement.h:90 AliAnalysisMuMuCutElement.h:91 AliAnalysisMuMuCutElement.h:92 AliAnalysisMuMuCutElement.h:93 AliAnalysisMuMuCutElement.h:94 AliAnalysisMuMuCutElement.h:95 AliAnalysisMuMuCutElement.h:96 AliAnalysisMuMuCutElement.h:97 AliAnalysisMuMuCutElement.h:98 AliAnalysisMuMuCutElement.h:99 AliAnalysisMuMuCutElement.h:100 AliAnalysisMuMuCutElement.h:101 AliAnalysisMuMuCutElement.h:102 AliAnalysisMuMuCutElement.h:103 AliAnalysisMuMuCutElement.h:104 AliAnalysisMuMuCutElement.h:105 AliAnalysisMuMuCutElement.h:106 AliAnalysisMuMuCutElement.h:107 AliAnalysisMuMuCutElement.h:108 AliAnalysisMuMuCutElement.h:109 AliAnalysisMuMuCutElement.h:110 AliAnalysisMuMuCutElement.h:111 AliAnalysisMuMuCutElement.h:112 AliAnalysisMuMuCutElement.h:113 AliAnalysisMuMuCutElement.h:114 AliAnalysisMuMuCutElement.h:115 AliAnalysisMuMuCutElement.h:116 AliAnalysisMuMuCutElement.h:117 AliAnalysisMuMuCutElement.h:118 AliAnalysisMuMuCutElement.h:119 AliAnalysisMuMuCutElement.h:120 AliAnalysisMuMuCutElement.h:121 AliAnalysisMuMuCutElement.h:122 AliAnalysisMuMuCutElement.h:123 AliAnalysisMuMuCutElement.h:124 AliAnalysisMuMuCutElement.h:125 AliAnalysisMuMuCutElement.h:126 AliAnalysisMuMuCutElement.h:127 AliAnalysisMuMuCutElement.h:128 AliAnalysisMuMuCutElement.h:129 AliAnalysisMuMuCutElement.h:130 AliAnalysisMuMuCutElement.h:131 AliAnalysisMuMuCutElement.h:132 AliAnalysisMuMuCutElement.h:133 AliAnalysisMuMuCutElement.h:134 AliAnalysisMuMuCutElement.h:135 AliAnalysisMuMuCutElement.h:136 AliAnalysisMuMuCutElement.h:137 AliAnalysisMuMuCutElement.h:138 AliAnalysisMuMuCutElement.h:139 AliAnalysisMuMuCutElement.h:140 AliAnalysisMuMuCutElement.h:141 AliAnalysisMuMuCutElement.h:142 AliAnalysisMuMuCutElement.h:143 AliAnalysisMuMuCutElement.h:144 AliAnalysisMuMuCutElement.h:145 AliAnalysisMuMuCutElement.h:146 AliAnalysisMuMuCutElement.h:147 AliAnalysisMuMuCutElement.h:148 AliAnalysisMuMuCutElement.h:149 AliAnalysisMuMuCutElement.h:150 AliAnalysisMuMuCutElement.h:151 AliAnalysisMuMuCutElement.h:152