added EMCAL electron trigger component and related modifications
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTTriggerEmcalElectron.h
1 //**************************************************************************                        
2 //* This file is property of and copyright by the ALICE HLT Project        *                        
3 //* ALICE Experiment at CERN, All rights reserved.                         *                        
4 //*                                                                        *                        
5 //* Primary Authors: marcelfigueredo@gmail.com                             *                        
6 //*                  for The ALICE HLT Project.                            *                        
7 //*                                                                        *                        
8 //* Permission to use, copy, modify and distribute this software and its   *                        
9 //* documentation strictly for non-commercial purposes is hereby granted   *                        
10 //* without fee, provided that the above copyright notice appears in all   *                        
11 //* copies and that both the copyright notice and this permission notice   *                        
12 //* appear in the supporting documentation. The authors make no claims     *                        
13 //* about the suitability of this software for any purpose. It is          *                        
14 //* provided "as is" without express or implied warranty.                  *                        
15 //**************************************************************************   
16
17
18 #ifndef ALIHLTTRIGGEREMCALELECTRON_H
19 #define ALIHLTTRIGGEREMCALELECTRON_H
20
21 #include "AliHLTTriggerCaloClusterEnergy.h"
22 #include "AliHLTTrigger.h"
23 class AliHLTCaloClusterReader;
24 class TRefArray;
25 class AliESDEvent;
26 class TMap;
27
28 class AliHLTTriggerEmcalElectron : public AliHLTTrigger
29 {
30
31 public:
32   AliHLTTriggerEmcalElectron(TString detector);
33   ~AliHLTTriggerEmcalElectron();
34
35   /// inherited from AliHLTTrigger: name of this trigger
36   virtual const char* GetTriggerName() const = 0;
37   /// inherited from AliHLTComponent: create an instance
38   virtual AliHLTComponent* Spawn() = 0;
39
40   ///Inherited from AliHLTComponent: Get list of OCDB objects
41   void GetOCDBObjectDescription( TMap* const targetMap);
42
43  protected:
44   /// inherited from AliHLTComponent: handle the initialization
45   int DoInit(int argc, const char** argv);
46
47   /// inherited from AliHLTComponent: handle cleanup
48   int DoDeinit();
49
50   /// inherited from AliHLTComponent: handle re-configuration event
51   int Reconfigure(const char* cdbEntry, const char* chainId);
52
53   /// inherited from AliHLTComponent, scan one argument and
54   /// its parameters
55   int ScanConfigurationArgument(int argc, const char** argv);
56
57   /// inherited from AliHLTComponent
58   //  Get a ratio by how much the data volume is shrunken or enhanced.
59   virtual void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
60
61 protected :
62
63   ///Get the clusters from the esd
64   virtual Int_t GetClustersFromEsd( const AliESDEvent * esd, TRefArray * clustersRefs ) = 0;
65
66   // FR: Set the appropriate readout list for each calo
67   virtual void SetCaloReadoutList() = 0;
68   
69   /// inherited from AliHLTTrigger: calculate the trigger
70   Int_t DoTrigger();
71
72   ///Default constructor prohibited
73   AliHLTTriggerEmcalElectron();
74
75   /// Copy constructor prohibited
76   AliHLTTriggerEmcalElectron(const AliHLTTriggerEmcalElectron & );
77
78   /// Assignment operator prohibited
79   AliHLTTriggerEmcalElectron& operator=(const AliHLTTriggerEmcalElectron &);
80  
81   /// Check if cluster fullfills criteria and if so trigger
82   template <class T> 
83   Bool_t TriggerOnEoverP(T* cluster,AliESDEvent *esd);
84
85   /// Threshold to trigger on EoverP
86   Float_t fEThreshold;
87   Float_t fEoverPThreshold;
88   Float_t fEoverPLimit;
89   
90   ///array to hold esd clusters
91   TRefArray * fClustersRefs;  //!transient
92
93   //The detector string (PHOS or EMCAL)
94   const TString fDetector;
95
96   ///Cluster data struct reader
97   AliHLTCaloClusterReader * fClusterReader; //!transient
98
99   /// the default configuration entry for this component
100   const char* fOCDBEntry; //!transient
101
102   
103   AliHLTComponentDataType fInputDataType;   ///Input data type for calo struct input, must be set in child class
104   
105
106   ClassDef(AliHLTTriggerEmcalElectron, 0)
107 };
108
109
110
111
112
113 #endif //ALIHLTTRIGGERCALOCLUSTERENERGY_H