General purphose component (Oystein)
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSSandboxComponent.cxx
1 //insert copyright
2
3 #include "AliHLTPHOSSandboxComponent.h"
4 #include "AliHLTPHOSProcessor.h"
5 #include "AliHLTPHOSChannelCounter.h"
6 #include "AliHLTPHOSRcuCellEnergyDataStruct.h"
7 #include "AliHLTPHOSDefinitions.h"
8
9 const AliHLTComponentDataType AliHLTPHOSSandboxComponent::fgkInputDataTypes[]={kAliHLTVoidDataType,{0,"",""}};
10
11 AliHLTPHOSSandboxComponent gAliHLTPHOSSandboxComponent;
12
13 AliHLTPHOSSandboxComponent::AliHLTPHOSSandboxComponent() :
14   AliHLTPHOSProcessor(),
15   fEventCount(0),
16   fChannelCounterPtr(0)
17 {
18
19 }
20
21 AliHLTPHOSSandboxComponent::~AliHLTPHOSSandboxComponent()
22 {
23 }
24 /*
25 AliHLTPHOSSandboxComponent::AliHLTPHOSSandboxComponent(const AliHLTPHOSSandboxComponent &) :
26   AliHLTDataSink(),
27   fEventCount(0),
28   fChannelCounterPtr(0)
29 {
30
31   //Copy constructor, not implemented
32
33 }
34 */
35
36 int 
37 AliHLTPHOSSandboxComponent::Deinit()
38 {
39   printf("AliHLTPHOSSandboxComponent::Deinit()\n");
40
41   //fChannelCounterPtr->PrintOutOfSyncChannels(fEventCount);
42   fChannelCounterPtr->FillHistograms(fEventCount);
43   fChannelCounterPtr->WriteHistograms("/opt/HLT-public/rundir/channelcount.root");
44   return 0;
45 }
46
47 Int_t
48 AliHLTPHOSSandboxComponent::DoDeinit()
49 {
50   //Deinitialize the component
51   Logging(kHLTLogInfo, "HLT", "PHOS", ",AliHLTPHOSSandboxComponent DoDeinit");
52
53   return 0;
54 }
55
56
57
58 const char*
59 AliHLTPHOSSandboxComponent::GetComponentID()
60 {
61   return "PhosSandbox";
62 }
63
64 void
65 AliHLTPHOSSandboxComponent::GetInputDataTypes(vector<AliHLTComponentDataType>& list)
66
67  //Get datatypes for input
68   const AliHLTComponentDataType* pType=fgkInputDataTypes;
69   while (pType->fID!=0) {
70     list.push_back(*pType); 
71     pType++;
72   }
73 }
74
75 AliHLTComponentDataType 
76 AliHLTPHOSSandboxComponent::GetOutputDataType()
77 {
78   return AliHLTPHOSDefinitions::fgkAliHLTSandboxDataType;
79 }
80
81
82 void 
83 AliHLTPHOSSandboxComponent::GetOutputDataSize(unsigned long& constBase, double& inputMultiplier)
84 {
85   constBase = 30;
86   inputMultiplier = 1;
87 }
88
89 /*
90 int 
91 AliHLTPHOSSandboxComponent::DoProcessing(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
92                                     AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
93                                     vector<AliHLTComponentBlockData>& outputBlocks, AliHLTComponentEventDoneData *& edd)
94 */
95 int 
96 AliHLTPHOSSandboxComponent::DoEvent(const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
97                                     AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, AliHLTUInt32_t& size,
98                                     vector<AliHLTComponentBlockData>& outputBlocks)
99 {
100    //Do event
101   
102   
103   const AliHLTComponentBlockData* iter = 0; 
104   unsigned long ndx; 
105
106   for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ )
107     {
108       iter = blocks+ndx;
109       
110       if(iter->fDataType != AliHLTPHOSDefinitions::fgkCellEnergyDataType)
111         {
112         //  cout << "Warning: data type is not fgkCellEnergyDataType " << endl;
113           continue;
114         }
115      // cout << "Data type is fgkCellEnergyDataType\n";
116       fChannelCounterPtr->CountChannels(reinterpret_cast<AliHLTPHOSRcuCellEnergyDataStruct*>(iter->fPtr));
117     }
118   
119   fEventCount++;
120
121   if(fEventCount % 10 == 0)
122    {
123         printf("Event #: %d\n", fEventCount);   
124         //fChannelCounterPtr->PrintOutOfSyncChannels(fEventCount);
125     }
126  
127   if(fEventCount % 1000 == 0 && fEventCount != 0)
128     {
129 //      fChannelCounterPtr->PrintOutOfSyncChannels(fEventCount);
130       fChannelCounterPtr->FillHistograms(fEventCount);
131       fChannelCounterPtr->WriteHistograms("/opt/HLT-public/rundir/channelcount.root");
132     }
133
134   //cout << "Doing event... \n";
135   return 0;
136 }
137
138
139 int
140 AliHLTPHOSSandboxComponent::DoInit(int argc, const char** argv )
141 {
142   //Do initialization
143
144   fChannelCounterPtr = new AliHLTPHOSChannelCounter();
145   
146   for(int i = 0; i < argc; i++)
147     {
148       /*
149        */
150     }
151
152   return 0;
153 }
154
155 AliHLTComponent*
156 AliHLTPHOSSandboxComponent::Spawn()
157 {
158   return new AliHLTPHOSSandboxComponent();
159 }