1 #include "AliHLTEmcalElectronMonitorComponent.h"
2 #include "AliHLTEmcalElectronMonitor.h"
3 #include "AliHLTScalars.h"
8 AliHLTEmcalElectronMonitorComponent::AliHLTEmcalElectronMonitorComponent() :
9 fRootFileName("EmcalElectrontrigger_histos.root"),
16 // default constructor
19 //____________________________________________________________________________________________________________
21 AliHLTEmcalElectronMonitorComponent::~AliHLTEmcalElectronMonitorComponent()
27 //____________________________________________________________________________________________________________
29 int AliHLTEmcalElectronMonitorComponent::DoInit(int argc, const char **argv)
33 fHistoPtr = new AliHLTEmcalElectronMonitor();
34 for (int i = 0; i < argc; i++) {
35 if (!strcmp("-roothistofilename", argv[i]))
36 fRootFileName = argv[i+1];
37 if (!strcmp("-pushfraction", argv[i]))
38 fPushFraction = atoi(argv[i+1]);
39 if (!strcmp("-verbose", argv[i]))
40 fVerbose = atoi(argv[i+1]);
46 //____________________________________________________________________________________________________________
48 int AliHLTEmcalElectronMonitorComponent::Deinit()
59 //____________________________________________________________________________________________________________
60 const char* AliHLTEmcalElectronMonitorComponent::GetComponentID()
64 return "EmcalElectronMonitor";
67 //____________________________________________________________________________________________________________
69 void AliHLTEmcalElectronMonitorComponent::GetInputDataTypes(vector<AliHLTComponentDataType> &list)
71 // define input data types
74 list.push_back(kAliHLTDataTypeEventStatistics|kAliHLTDataOriginHLT);
77 //____________________________________________________________________________________________________________
79 AliHLTComponentDataType AliHLTEmcalElectronMonitorComponent::GetOutputDataType()
82 // return output data types
84 return kAliHLTDataTypeHistogram | kAliHLTDataOriginEMCAL;
87 //____________________________________________________________________________________________________________
89 void AliHLTEmcalElectronMonitorComponent::GetOutputDataSize(unsigned long &constBase, double &inputMultiplier)
92 // calculate output data size
95 inputMultiplier = 100;
98 //____________________________________________________________________________________________________________
100 int AliHLTEmcalElectronMonitorComponent::DoEvent(const AliHLTComponentEventData &evtData, const AliHLTComponentBlockData *blocks,
101 AliHLTComponentTriggerData &/*trigData*/, AliHLTUInt8_t */*outputPtr*/, AliHLTUInt32_t &/*size*/,
102 std::vector<AliHLTComponentBlockData> &/*outputBlocks*/)
107 const AliHLTComponentBlockData *iter = NULL;
108 UInt_t specification = 0;
110 for (unsigned long ij = 0; ij < evtData.fBlockCnt; ij++) {
111 AliHLTScalars *scalarPtr = NULL;
113 if (fVerbose) PrintComponentDataTypeInfo(iter->fDataType);
115 if (iter->fDataType == kAliHLTDataTypeEventStatistics) {
116 scalarPtr = reinterpret_cast<AliHLTScalars*>(iter->fPtr);
119 if (fVerbose) HLTWarning("Electron Monitor: Data block does not contain event stats - check if flag is set for histograming for AliHLTEmcalElectronTrigger \n");
122 specification |= iter->fSpecification;
125 fHistoPtr->MakeHisto(scalarPtr);
130 TFile rootHistFile(fRootFileName, "RECREATE");
132 fHistoPtr->GetHistograms()->Write();
134 if (fLocalEventCount%fPushFraction == 0) {
135 if (fVerbose) cout << "Emcal Electron Monitor: pushback done at " << fLocalEventCount << " evens " << endl;
136 PushBack(fHistoPtr->GetHistograms(), kAliHLTDataTypeTObjArray | kAliHLTDataOriginEMCAL, specification);
141 //____________________________________________________________________________________________________________
143 AliHLTComponent* AliHLTEmcalElectronMonitorComponent::Spawn()
147 return new AliHLTEmcalElectronMonitorComponent();