ROOT logo
#ifndef ALIMUONACCEFFSUBMITTER_H
#define ALIMUONACCEFFSUBMITTER_H

//
// AliMuonAccEffSubmitter : a class to help submit Acc x Eff simulations
// anchored to real runs for J/psi, upsilon, single muons, etc...
//
// author: Laurent Aphecetche (Subatech)
//

#include "AliMuonGridSubmitter.h"

class AliMuonAccEffSubmitter : public AliMuonGridSubmitter
{
public:
  AliMuonAccEffSubmitter(const char* generator="GenParamCustom",
                         Bool_t localOnly=kFALSE,
                         const char* generatorVersion="8125");

  virtual Bool_t Generate(const char* jdlname) const;
  virtual Bool_t Run(const char* mode);

  virtual ~AliMuonAccEffSubmitter();

  void MakeNofEventsPropToTriggerCount(const char* trigger="CMUL7-B-NOPF-MUON", Float_t ratio=1.0);
  
  void MakeNofEventsFixed(Int_t nevents);
  
  void UseOCDBSnapshots(Bool_t flag);
  
  void UseExternalConfig(const char* externalConfigFullFilePath);
  
  void UseAODMerging(Bool_t flag);
  
  Bool_t Merge(Int_t stage, Bool_t dryRun=kTRUE);

  Int_t Submit(Bool_t dryRun=kTRUE);
  
  Int_t LocalTest();
  
  TString RunJDLName() const { return "run.jdl"; }

  TString MergeJDLName(Bool_t final) const { return (final ? "AOD_merge_final.jdl" : "AOD_merge.jdl"); }

  virtual void Print(Option_t* opt="") const;

  void SetSplitMaxInputFileNumber(Int_t n) { fSplitMaxInputFileNumber = n; }
  
  Int_t GetSplitMaxInputFileNumber() const { return fSplitMaxInputFileNumber; }
  
  Int_t CompactMode() const { return fCompactMode; }
  
  void SetCompactMode(Int_t mode) { fCompactMode=mode; }
  
  Bool_t MakeOCDBSnapshots();
  
  void SetOCDBPath(const char* ocdbPath);

  void SetOCDBSnapshotDir(const char* dir);

  Bool_t SetGenerator(const char* generator);

  Int_t MaxEventsPerChunk() const { return fMaxEventsPerChunk; }
  void SetMaxEventsPerChunk(Int_t n) { fMaxEventsPerChunk = n; }

  TString OCDBPath() const { return GetMapValue("OCDBPath"); }
  
  TString SnapshotDir() const { return GetMapValue("OCDBsnapshot"); }

  Int_t SplitRunList(const char* inputList, int maxJobs=1500);
  
private:
  
  Bool_t GenerateRunJDL(const char* name) const;
  
  Bool_t GenerateMergeJDL(const char* name) const;
  
  TString ReferenceTrigger() const { return GetMapValue("ReferenceTrigger"); }
  
  void UpdateLocalFileList(Bool_t clearSnapshots=kFALSE);

private:
  AliMuonAccEffSubmitter(const AliMuonAccEffSubmitter& rhs);
  AliMuonAccEffSubmitter& operator=(const AliMuonAccEffSubmitter& rhs);
  
private:
  Float_t fRatio; // ratio simulated events vs real events
  Int_t fFixedNofEvents; // fixed number of events to be used per run
  Int_t fMaxEventsPerChunk; // max events to generate per subjob
  TString fOCDBPath; // OCDB path
  Int_t fSplitMaxInputFileNumber; // used for merging jdl
  Int_t fCompactMode; // controls which outputs are kept (0=everything, 1=only aods)
  TString fExternalConfig; // path to an (optional) external config file
  Bool_t fUseOCDBSnapshots; // whether to use OCDB snapshots or not
  TString fSnapshotDir; // directory for OCDB snapshots
  Bool_t fUseAODMerging; // whether or not to perform (aod) merging
  
  ClassDef(AliMuonAccEffSubmitter,2) // Helper class to submit AccxEff single particle simulations
};

#endif

 AliMuonAccEffSubmitter.h:1
 AliMuonAccEffSubmitter.h:2
 AliMuonAccEffSubmitter.h:3
 AliMuonAccEffSubmitter.h:4
 AliMuonAccEffSubmitter.h:5
 AliMuonAccEffSubmitter.h:6
 AliMuonAccEffSubmitter.h:7
 AliMuonAccEffSubmitter.h:8
 AliMuonAccEffSubmitter.h:9
 AliMuonAccEffSubmitter.h:10
 AliMuonAccEffSubmitter.h:11
 AliMuonAccEffSubmitter.h:12
 AliMuonAccEffSubmitter.h:13
 AliMuonAccEffSubmitter.h:14
 AliMuonAccEffSubmitter.h:15
 AliMuonAccEffSubmitter.h:16
 AliMuonAccEffSubmitter.h:17
 AliMuonAccEffSubmitter.h:18
 AliMuonAccEffSubmitter.h:19
 AliMuonAccEffSubmitter.h:20
 AliMuonAccEffSubmitter.h:21
 AliMuonAccEffSubmitter.h:22
 AliMuonAccEffSubmitter.h:23
 AliMuonAccEffSubmitter.h:24
 AliMuonAccEffSubmitter.h:25
 AliMuonAccEffSubmitter.h:26
 AliMuonAccEffSubmitter.h:27
 AliMuonAccEffSubmitter.h:28
 AliMuonAccEffSubmitter.h:29
 AliMuonAccEffSubmitter.h:30
 AliMuonAccEffSubmitter.h:31
 AliMuonAccEffSubmitter.h:32
 AliMuonAccEffSubmitter.h:33
 AliMuonAccEffSubmitter.h:34
 AliMuonAccEffSubmitter.h:35
 AliMuonAccEffSubmitter.h:36
 AliMuonAccEffSubmitter.h:37
 AliMuonAccEffSubmitter.h:38
 AliMuonAccEffSubmitter.h:39
 AliMuonAccEffSubmitter.h:40
 AliMuonAccEffSubmitter.h:41
 AliMuonAccEffSubmitter.h:42
 AliMuonAccEffSubmitter.h:43
 AliMuonAccEffSubmitter.h:44
 AliMuonAccEffSubmitter.h:45
 AliMuonAccEffSubmitter.h:46
 AliMuonAccEffSubmitter.h:47
 AliMuonAccEffSubmitter.h:48
 AliMuonAccEffSubmitter.h:49
 AliMuonAccEffSubmitter.h:50
 AliMuonAccEffSubmitter.h:51
 AliMuonAccEffSubmitter.h:52
 AliMuonAccEffSubmitter.h:53
 AliMuonAccEffSubmitter.h:54
 AliMuonAccEffSubmitter.h:55
 AliMuonAccEffSubmitter.h:56
 AliMuonAccEffSubmitter.h:57
 AliMuonAccEffSubmitter.h:58
 AliMuonAccEffSubmitter.h:59
 AliMuonAccEffSubmitter.h:60
 AliMuonAccEffSubmitter.h:61
 AliMuonAccEffSubmitter.h:62
 AliMuonAccEffSubmitter.h:63
 AliMuonAccEffSubmitter.h:64
 AliMuonAccEffSubmitter.h:65
 AliMuonAccEffSubmitter.h:66
 AliMuonAccEffSubmitter.h:67
 AliMuonAccEffSubmitter.h:68
 AliMuonAccEffSubmitter.h:69
 AliMuonAccEffSubmitter.h:70
 AliMuonAccEffSubmitter.h:71
 AliMuonAccEffSubmitter.h:72
 AliMuonAccEffSubmitter.h:73
 AliMuonAccEffSubmitter.h:74
 AliMuonAccEffSubmitter.h:75
 AliMuonAccEffSubmitter.h:76
 AliMuonAccEffSubmitter.h:77
 AliMuonAccEffSubmitter.h:78
 AliMuonAccEffSubmitter.h:79
 AliMuonAccEffSubmitter.h:80
 AliMuonAccEffSubmitter.h:81
 AliMuonAccEffSubmitter.h:82
 AliMuonAccEffSubmitter.h:83
 AliMuonAccEffSubmitter.h:84
 AliMuonAccEffSubmitter.h:85
 AliMuonAccEffSubmitter.h:86
 AliMuonAccEffSubmitter.h:87
 AliMuonAccEffSubmitter.h:88
 AliMuonAccEffSubmitter.h:89
 AliMuonAccEffSubmitter.h:90
 AliMuonAccEffSubmitter.h:91
 AliMuonAccEffSubmitter.h:92
 AliMuonAccEffSubmitter.h:93
 AliMuonAccEffSubmitter.h:94
 AliMuonAccEffSubmitter.h:95
 AliMuonAccEffSubmitter.h:96
 AliMuonAccEffSubmitter.h:97
 AliMuonAccEffSubmitter.h:98
 AliMuonAccEffSubmitter.h:99
 AliMuonAccEffSubmitter.h:100
 AliMuonAccEffSubmitter.h:101
 AliMuonAccEffSubmitter.h:102