AliPhysics  cc1c0ba (cc1c0ba)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliEmcalCorrectionTask.h
Go to the documentation of this file.
1 #ifndef ALIEMCALCORRECTIONTASK_H
2 #define ALIEMCALCORRECTIONTASK_H
3 
4 // YAML::Node
5 class Node;
8 class AliEMCALGeometry;
9 class AliVEvent;
10 
11 #include <AliAnalysisTaskSE.h>
12 #include <AliVCluster.h>
13 
14 #include "AliYAMLConfiguration.h"
15 #include "AliEmcalContainerUtils.h"
16 #include "AliParticleContainer.h"
17 #include "AliMCParticleContainer.h"
18 #include "AliTrackContainer.h"
19 #include "AliClusterContainer.h"
20 #include "AliEmcalTrackSelection.h"
21 
46  public:
51  enum BeamType {
52  kNA = -1,
53  kpp = 0,
54  kAA = 1,
55  kpA = 2
56  };
57 
59  static const std::map <std::string, AliVCluster::VCluUserDefEnergy_t> fgkClusterEnergyTypeMap;
60 
62  static const std::map <std::string, AliEmcalTrackSelection::ETrackFilterType_t> fgkTrackFilterTypeMap;
63 
65  AliEmcalCorrectionTask(const char * name);
66  // Implemented using copy-and-swap mechanism
69  friend void swap(AliEmcalCorrectionTask & first, AliEmcalCorrectionTask & second);
71  virtual ~AliEmcalCorrectionTask();
72 
81  void Initialize(bool removeDummyTask = false);
83  void SetUserConfigurationFilename(std::string name) { fUserConfigurationFilename = name; }
86  // Print the actual configuration string
87  std::ostream & PrintConfigurationString(std::ostream & in, bool userConfig = false) const;
88  // Write configuration to file
89  bool WriteConfigurationFile(std::string filename, bool userConfig = false) const;
90  // Compare configurations
91  bool CompareToStoredConfiguration(std::string filename, bool userConfig = false) const;
92 
93  // Options
94  // Printing
95  friend std::ostream & operator<<(std::ostream &in, const AliEmcalCorrectionTask &myTask);
96  void Print(Option_t* opt = "") const;
97  std::ostream & Print(std::ostream &in) const;
98  std::string toString(bool includeYAMLConfigurationInfo = false) const;
99  // Set
102  // Centrality options
104  void SetCentralityEstimator(const char * c) { fCentEst = c ; }
105  virtual void SetNCentBins(Int_t n) { fNcentBins = n ; }
106  void SetCentRange(Double_t min, Double_t max) { fMinCent = min ; fMaxCent = max ; }
107 
115  const std::vector<AliEmcalCorrectionComponent *> & CorrectionComponents() { return fCorrectionComponents; }
116 
117  // Containers and cells
118  AliParticleContainer *AddParticleContainer(const char *n) { return AliEmcalContainerUtils::AddContainer<AliParticleContainer>(n, fParticleCollArray); }
119  AliTrackContainer *AddTrackContainer(const char *n) { return AliEmcalContainerUtils::AddContainer<AliTrackContainer>(n, fParticleCollArray); }
120  AliMCParticleContainer *AddMCParticleContainer(const char *n) { return AliEmcalContainerUtils::AddContainer<AliMCParticleContainer>(n, fParticleCollArray); }
121  AliClusterContainer *AddClusterContainer(const char *n) { return AliEmcalContainerUtils::AddContainer<AliClusterContainer>(n, fClusterCollArray); }
126  AliParticleContainer *GetParticleContainer(Int_t i=0) const { return AliEmcalContainerUtils::GetContainer<AliParticleContainer>(i, fParticleCollArray); }
127  AliParticleContainer *GetParticleContainer(const char* name) const { return AliEmcalContainerUtils::GetContainer<AliParticleContainer>(name, fParticleCollArray); }
128  AliClusterContainer *GetClusterContainer(Int_t i=0) const { return AliEmcalContainerUtils::GetContainer<AliClusterContainer>(i, fClusterCollArray); }
129  AliClusterContainer *GetClusterContainer(const char* name) const { return AliEmcalContainerUtils::GetContainer<AliClusterContainer>(name, fClusterCollArray); }
131  AliMCParticleContainer *GetMCParticleContainer(const char* name) const { return dynamic_cast<AliMCParticleContainer*>(GetParticleContainer(name)); }
133  AliTrackContainer *GetTrackContainer(const char* name) const { return dynamic_cast<AliTrackContainer*>(GetParticleContainer(name)) ; }
135  void RemoveClusterContainer(Int_t i=0) { fClusterCollArray.RemoveAt(i) ; }
136  // Cells
137  AliEmcalCorrectionCellContainer *GetCellContainer(const std::string & cellsContainerName) const;
138 
139  // Methods from AliAnalysisTaskSE
141  void UserExec(Option_t * option);
142  Bool_t UserNotify();
143 
144  // Aditional steering functions
145  virtual void ExecOnce();
146  virtual Bool_t Run();
147 
170 
171  private:
172  // Utility functions
173  // Cell utilities
175  // Container utilities
176  void CheckForContainerArray(AliEmcalContainer * cont, AliEmcalContainerUtils::InputObject_t objectType);
177  // YAML configuration utilities
179  bool CheckPossibleNamesForComponentName(std::string & name, std::set <std::string> & possibleComponents);
180  // General utilities
181  BeamType GetBeamType() const;
182  void PrintRequestedContainersInformation(AliEmcalContainerUtils::InputObject_t inputObjectType, std::ostream & stream) const;
183  // LEGO Train utilities
184  void RemoveDummyTask() const;
185 
186  // Retrieve objects in event
188 
189  // Execute component functions
191  void ExecOnceComponents();
192 
193  // Initialization functions
195  void DetermineComponentsToExecute(std::vector <std::string> & componentsToExecute);
197  void InitializeComponents();
198 
199  // Input objects (Cells, Clusters, Tracks) functions
201  void AddContainersToComponent(AliEmcalCorrectionComponent * component, AliEmcalContainerUtils::InputObject_t inputObjectType, bool checkObjectExists = false);
202 
203  // Hidden from CINT since it cannot handle YAML objects well
204  // Input objects
205  void SetupContainersFromInputNodes(AliEmcalContainerUtils::InputObject_t inputObjectType, std::set <std::string> & requestedContainers);
206  // Cells
207  void SetupCellsInfo(std::string containerName);
208  // Containers
209  void SetupContainer(const AliEmcalContainerUtils::InputObject_t inputObjectType, const std::string containerName);
210  AliEmcalContainer * AddContainer(const AliEmcalContainerUtils::InputObject_t contType, const std::string containerName);
211 
212  // Utilities
213  // YAML node dependent initialization utlitiles
214  void GetPropertyNamesFromNode(const std::string configurationName, const std::string componentName, std::set <std::string> & propertyNames, const bool nodeRequired);
215 
217 
218  std::string fSuffix;
219 
222 
223  std::vector <std::string> fOrderedComponentsToExecute;
224  std::vector <AliEmcalCorrectionComponent *> fCorrectionComponents;
226 
227  bool fIsEsd;
241  AliEMCALGeometry *fGeom;
242 
245  std::vector <AliEmcalCorrectionCellContainer *> fCellCollArray;
246 
248 
250  ClassDef(AliEmcalCorrectionTask, 4); // EMCal correction task
252 };
253 
273  public:
275  fBranchName(""),
276  fName(""),
277  fIsEmbedding(""),
278  fCells(0)
279  {}
280  AliEmcalCorrectionCellContainer(std::string branchName, std::string name, std::string branchToCopyName, bool isEmbedded):
281  fBranchName(branchName),
282  fName(name),
283  fIsEmbedding(isEmbedded),
284  fCells(0)
285  {}
287 
289  std::string GetBranchName() const { return fBranchName; }
291  std::string GetName() const { return fName; }
293  bool GetIsEmbedding() const { return fIsEmbedding; }
295  AliVCaloCells * GetCells() const { return fCells; }
296 
298  void SetBranchName(std::string branchName) { fBranchName = branchName; }
300  void SetName(std::string name ) { fName = name; }
302  void SetIsEmbedding(bool isEmbedded) { fIsEmbedding = isEmbedded; }
304  void SetCells(AliVCaloCells * cells) { fCells = cells; }
305 
306  protected:
307  std::string fBranchName;
308  std::string fName;
310  AliVCaloCells *fCells;
311 
313  ClassDef(AliEmcalCorrectionCellContainer, 1); // EMCal correction cell container
315 };
316 
317 #endif /* ALIEMCALCORRECTIONTASK_H */
Int_t fNcentBins
how many centrality bins
void SetBranchName(std::string branchName)
Set the name of the cells branch (NOT the same as the name!)
std::string fSuffix
Suffix of the Correction Task (used to select specialized components)
void PrintRequestedContainersInformation(AliEmcalContainerUtils::InputObject_t inputObjectType, std::ostream &stream) const
Steering task for the EMCal correction framework.
bool fIsEmbedding
Whether the cells should be taken from an external file (embedded)
AliEMCALGeometry * fGeom
! Emcal geometry
const char * filename
Definition: TestFCM.C:1
static const std::map< std::string, AliVCluster::VCluUserDefEnergy_t > fgkClusterEnergyTypeMap
Relates string to the cluster energy enumeration for YAML configuration.
static AliEmcalCorrectionTask * ConfigureEmcalCorrectionTaskOnLEGOTrain(TString suffix)
std::string GetName() const
Get the name of the cells object (NOT the same as the branch!)
double Double_t
Definition: External.C:58
virtual void SetNCentBins(Int_t n)
AliTrackContainer * GetTrackContainer(const char *name) const
void SetCentralityEstimator(const char *c)
void SetupContainer(const AliEmcalContainerUtils::InputObject_t inputObjectType, const std::string containerName)
AliVCaloCells * fCells
! The actual cells object associated with this infomration
std::vector< std::string > fOrderedComponentsToExecute
Ordered set of components to execute.
bool WriteConfigurationFile(std::string filename, bool userConfig=false) const
bool CheckPossibleNamesForComponentName(std::string &name, std::set< std::string > &possibleComponents)
std::vector< AliEmcalCorrectionComponent * > fCorrectionComponents
Contains the correction components.
Container with name, TClonesArray and cuts for particles.
std::string GetInputFieldNameFromInputObjectType(AliEmcalContainerUtils::InputObject_t inputObjectType)
void AdoptClusterContainer(AliClusterContainer *cont)
void UserExec(Option_t *option)
AliEmcalCorrectionTask & operator=(AliEmcalCorrectionTask other)
void SetDefaultConfigurationFilename(std::string name)
Set the path to the default configuration filename (Expert use only! The user should set the user con...
Double_t fMaxCent
max centrality for event selection
Double_t fVertex[3]
! Event vertex
AliEmcalContainer * AddContainer(const AliEmcalContainerUtils::InputObject_t contType, const std::string containerName)
TCanvas * c
Definition: TestFitELoss.C:172
void DetermineComponentsToExecute(std::vector< std::string > &componentsToExecute)
TList * fOutput
! Output for histograms
Wrapper around cells objects for the EMCal Correction Task.
bool fConfigurationInitialized
True if the YAML configuration files are initialized.
void RemoveClusterContainer(Int_t i=0)
void CheckForContainerArray(AliEmcalContainer *cont, AliEmcalContainerUtils::InputObject_t objectType)
AliParticleContainer * GetParticleContainer(Int_t i=0) const
friend void swap(AliEmcalCorrectionTask &first, AliEmcalCorrectionTask &second)
Container for particles within the EMCAL framework.
void SetUserConfigurationFilename(std::string name)
Set the path to the user configuration filename.
AliTrackContainer * GetTrackContainer(Int_t i=0) const
void SetupCellsInfo(std::string containerName)
AliMCParticleContainer * GetMCParticleContainer(const char *name) const
bool CompareToStoredConfiguration(std::string filename, bool userConfig=false) const
AliVCaloCells * GetCells() const
Pointer to the actual CaloCells object.
bool fEventInitialized
If the event is initialized properly.
TString fCentEst
name of V0 centrality estimator
AliTrackContainer * AddTrackContainer(const char *n)
int Int_t
Definition: External.C:63
std::string fUserConfigurationFilename
! User YAML configruation filename
void GetPropertyNamesFromNode(const std::string configurationName, const std::string componentName, std::set< std::string > &propertyNames, const bool nodeRequired)
InputObject_t
Type of input object to be created
std::string fBranchName
Name of the cells branch.
AliClusterContainer * GetClusterContainer(Int_t i=0) const
const std::vector< AliEmcalCorrectionComponent * > & CorrectionComponents()
AliClusterContainer * GetClusterContainer(const char *name) const
static AliEmcalCorrectionTask * AddTaskEmcalCorrectionTask(TString suffix="")
void SetCells(AliVCaloCells *cells)
Sets the Pointer to the actual CaloCells object.
Double_t fCent
! Event centrality
void CreateInputObjects(AliEmcalContainerUtils::InputObject_t inputObjectType)
Base class for correction components in the EMCal correction framework.
void SetUseNewCentralityEstimation(Bool_t b)
BeamType
Switch for the beam type.
AliEmcalCorrectionCellContainer(std::string branchName, std::string name, std::string branchToCopyName, bool isEmbedded)
friend std::ostream & operator<<(std::ostream &in, const AliEmcalCorrectionTask &myTask)
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry
static const std::map< std::string, AliEmcalTrackSelection::ETrackFilterType_t > fgkTrackFilterTypeMap
Relates string to the track filter enumeration for YAML configuration.
std::string GetBranchName() const
Get the name of the cells branch (NOT the same as the name!)
void SetCellsObjectInCellContainerBasedOnProperties(AliEmcalCorrectionCellContainer *cellContainer)
Bool_t fUseNewCentralityEstimation
Use new centrality estimation (for 2015 data)
bool GetIsEmbedding() const
True if the cells are located in the event that is being embedded.
AliEmcalCorrectionCellContainer * GetCellContainer(const std::string &cellsContainerName) const
AliYAMLConfiguration fYAMLConfig
Handles configuration from YAML.
std::string fDefaultConfigurationFilename
! Default YAML configuration filename
TObjArray fParticleCollArray
Particle/track collection array.
TObjArray fClusterCollArray
Cluster collection array.
AliClusterContainer * AddClusterContainer(const char *n)
AliMCParticleContainer * GetMCParticleContainer(Int_t i=0) const
void SetCentRange(Double_t min, Double_t max)
void AdoptTrackContainer(AliTrackContainer *cont)
void AdoptParticleContainer(AliParticleContainer *cont)
AliParticleContainer * AddParticleContainer(const char *n)
std::string fName
Name of the cells object.
void SetIsEmbedding(bool isEmbedded)
Set to true if the cells are located in the event that is being embedded.
BeamType fBeamType
! Event beam type
std::string toString(bool includeYAMLConfigurationInfo=false) const
const char Option_t
Definition: External.C:48
void Print(Option_t *opt="") const
Int_t fNVertCont
! Event vertex number of contributors
void RemoveParticleContainer(Int_t i=0)
void SetName(std::string name)
Set the name of the cells object (NOT the same as the branch!)
bool Bool_t
Definition: External.C:53
Int_t fCentBin
! Event centrality bin
void AdoptMCParticleContainer(AliMCParticleContainer *cont)
void SetupContainersFromInputNodes(AliEmcalContainerUtils::InputObject_t inputObjectType, std::set< std::string > &requestedContainers)
Double_t fMinCent
min centrality for event selection
YAML configuration class for AliPhysics.
std::vector< AliEmcalCorrectionCellContainer * > fCellCollArray
Cells collection array.
Container structure for EMCAL clusters.
Container for MC-true particles within the EMCAL framework.
void AddContainersToComponent(AliEmcalCorrectionComponent *component, AliEmcalContainerUtils::InputObject_t inputObjectType, bool checkObjectExists=false)
void Initialize(bool removeDummyTask=false)
std::ostream & PrintConfigurationString(std::ostream &in, bool userConfig=false) const
AliParticleContainer * GetParticleContainer(const char *name) const
AliMCParticleContainer * AddMCParticleContainer(const char *n)
BeamType fForceBeamType
forced beam type