Added V0 and SPDF0 information to the selectioninfo in the helper, removed streaming...
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisHelperJetTasks.h
1 #ifndef  ALIANALYSISHELPERJETTASKS_H
2 #define  ALIANALYSISHELPERJETTASKS_H
3 #include "TObject.h"
4
5 class AliMCEvent;
6 class AliAODJet;
7 class AliVEvent;
8 class TString;
9 class AliGenPythiaEventHeader;
10 class TVector3;
11 class AliGenEventHeader;
12
13 // Helper Class that contains a lot of usefull static functions (i.e. for Flavor selection.
14
15 class AliAnalysisHelperJetTasks : public TObject {
16  public:
17   AliAnalysisHelperJetTasks() : TObject() {;}
18   virtual ~AliAnalysisHelperJetTasks(){;}
19
20
21   enum {kMaxJets = 6}; //  needed for array size not to fragemnt memory on the heap by many new/delete 
22
23
24   enum { kNone = 1<<0,
25          kBunchBunch = 1<<1,
26          kBunchEmpty = 1<<2,
27          kEmptyEmpty= 1<<3,
28          kV0A=1<<4,
29          kV0C=1<<5,
30          kNoV0BG=1<<6,
31          kSPDFO=1<<7,
32          kPhysicsSelection = 1<<8, 
33          kVertexIn = 1<<9, 
34          kIsCosmic = 1<<10, 
35          kIsPileUp = 1<<11,
36          kIsMCND=1<<12,
37          kIsMCDD=1<<13,
38          kIsMCSD=1<<14,
39          kTotalSelections = (1<<15) - 1};
40
41   enum Trigger {kAcceptAll = 0,kMB1,kMB2,kMB3,kSPDGFO,kTrigger}; // 
42   // same as in PWG0Helper
43   enum MCProcessType { kInvalidProcess = -1, kND = 0x1, kDD = 0x2, kSD = 0x4, kOnePart = 0x8 };
44
45
46
47   
48   static AliGenPythiaEventHeader*  GetPythiaEventHeader(AliMCEvent *mcEvent);
49   static void PrintStack(AliMCEvent *mcEvent,Int_t iFirst = 0,Int_t iLast = 0,Int_t iMaxPrint = 10);
50   static void GetClosestJets(AliAODJet *genJets,
51                              const Int_t &kGenJets,
52                              AliAODJet *recJets,
53                              const Int_t &kRecJets,
54                              Int_t *iGenIndex,
55                              Int_t *iRecIndex,
56                              Int_t iDebug, Float_t maxDist = 0.5);
57
58   static void MergeOutput(char* cFiles, char* cDir = "",char *cList = "",char* cOutFile ="allpt.root",Bool_t bUpdate = false); // Merges the files in the input text file  needs the two histograms fh1PtHard_Trials, fh1Xsec and the name of the input list
59   static Bool_t PythiaInfoFromFile(const char* currFile,Float_t &fXsec,Float_t &fTrials);// get the cross section and the trails either from pyxsec.root or from pysec_hists.root
60   static Bool_t PrintDirectorySize(const char* currFile); // print the size of the output on a given file
61   static Bool_t GetEventShapes(TVector3 &n01, TVector3 * pTrack, Int_t nTracks, Double_t * eventShapes);
62
63   static MCProcessType GetPythiaEventProcessType(AliGenEventHeader* aHeader, Bool_t adebug = kFALSE);
64   static MCProcessType GetDPMjetEventProcessType(AliGenEventHeader* aHeader, Bool_t adebug = kFALSE);
65   static Int_t GetLastProcessType() { return fgLastProcessType; }
66
67   static Bool_t Selected(Bool_t bSet = kFALSE,Bool_t bNew = kTRUE); // static function to store the state of selection from service task
68
69   static Bool_t IsPileUp(); // Wrapper for SelectInfo with PileUp
70   static Bool_t IsCosmic(); // Wrapper for SelectInfo with cosmic
71   static Bool_t TestSelectInfo(UInt_t iMask); // Wrapper for testing the SelectInfo bitmask
72
73   static UInt_t SelectInfo(Bool_t bSet = kFALSE,UInt_t iNew = 0); // static function to store the state bitmask of the selection from service task
74   
75   // these methods have been essentially copied from PWG0/AliTriggerAnalysis and expanded to use with AOD
76   static Bool_t IsTriggerFired(const AliVEvent* aEsd, Trigger trigger);
77
78   private:
79   
80   static Int_t fgLastProcessType;    // stores the raw value of the last process type extracted
81  
82   ClassDef(AliAnalysisHelperJetTasks, 3) 
83 };
84
85 #endif // ALIANALYSISHELPERJETTASKS_H