#endif
class TClass;
+class TFile;
class AliAnalysisDataSlot;
class AliAnalysisDataContainer;
//=== CALL IN THE CONSTRUCTOR OF DERIVED CLASS TO DEFINE INPUTS/OUTPUTS ===
void DefineInput(Int_t islot, TClass *type);
void DefineOutput(Int_t islot, TClass *type);
- //=====================================================================
//=====================================================================
// === OVERLOAD THIS TO CONNECT TREE BRANCHES AT INPUT SLOTS. YOU
//=====================================================================
// === CALL THIS IN CreateOutputObjects BEFORE CREATING THE OBJECT FOR EACH
// OUTPUT IOUT THAT HAS TO BE WRITTEN TO A FILE
- void OpenFile(Int_t iout, Option_t *option="RECREATE") const;
+ TFile *OpenFile(Int_t iout, Option_t *option="RECREATE") const;
public:
AliAnalysisTask();
virtual void CreateOutputObjects();
// === OVERLOAD THIS IF YOU NEED TO INITIALIZE YOUR CLASS ON THE CLIENT
virtual void LocalInit();
- // === OVERLOAD THIS IF YOU NEED TO TREAT INPUT FILE CHANGE
+ // === OVERLOAD THIS IF YOU NEED TO TREAT INPUT FILE/TREE CHANGE
virtual Bool_t Notify();
+ // === OVERLOAD THIS IF YOU NEED TO TREAT BIN CHANGE IN EVENT MIXING
+ virtual Bool_t NotifyBinChange();
+ //=====================================================================
+ // Optional method that will be called in SlaveTerminate phase for each task
+ // Warning: in PROOF mode this is called before merging so their cleanup is
+ // not allowed - do output cleanup in class destructor.
+ virtual void FinishTaskOutput();
// Conect inputs/outputs to data containers (by AliAnalysisModule)
Bool_t ConnectInput(Int_t islot, AliAnalysisDataContainer *cont);
Bool_t ConnectOutput(Int_t islot, AliAnalysisDataContainer *cont);