X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HLT%2FPHOS%2FAliHLTPHOSRcuHistogramProducerComponent.cxx;h=473095fe6bb5a7cf4bfad872f2b29dc289e90440;hb=48bcc98ba9601f4d7913eb5015822cc53a4e791d;hp=fd48d993784e22c8690472be8f246851cbc1c9eb;hpb=1b48666586fb58dc3defc2a625422c34a84259e3;p=u%2Fmrichter%2FAliRoot.git diff --git a/HLT/PHOS/AliHLTPHOSRcuHistogramProducerComponent.cxx b/HLT/PHOS/AliHLTPHOSRcuHistogramProducerComponent.cxx index fd48d993784..473095fe6bb 100644 --- a/HLT/PHOS/AliHLTPHOSRcuHistogramProducerComponent.cxx +++ b/HLT/PHOS/AliHLTPHOSRcuHistogramProducerComponent.cxx @@ -1,3 +1,5 @@ +// $Id$ + /************************************************************************** * Copyright(c) 2006, ALICE Experiment at CERN, All rights reserved. * * * @@ -14,20 +16,16 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -#include -#include "AliHLTPHOSRcuCellEnergyDataStruct.h" +//#include "AliHLTPHOSRcuCellEnergyDataStruct.h" #include "AliHLTPHOSRcuHistogramProducer.h" #include "AliHLTPHOSRcuHistogramProducerComponent.h" #include "AliHLTPHOSRcuCellAccumulatedEnergyDataStruct.h" +#include "AliHLTPHOSSharedMemoryInterfacev2.h" +#include "AliHLTPHOSChannelDataHeaderStruct.h" +#include "AliHLTPHOSChannelDataStruct.h" -//const AliHLTComponentDataType AliHLTPHOSRcuHistogramProducerComponent::fgkInputDataTypes[]={kAliHLTVoidDataType,{0,"",""}}; //'zero' terminated array -//const AliHLTComponentDataType AliHLTPHOSRcuHistogramProducerComponent::fgkOutputDataType=kAliHLTVoidDataType; - AliHLTPHOSRcuHistogramProducerComponent gAliHLTPHOSRcuHistogramProducerComponent; - - - /************************************************************************* * Class AliHLTPHOSRcuHistogramProducerComponent accumulating histograms * * with amplitudes per PHOS channel * @@ -35,9 +33,14 @@ AliHLTPHOSRcuHistogramProducerComponent gAliHLTPHOSRcuHistogramProducerComponent * and it fills the histograms with amplitudes per channel. * * Usage example see in PHOS/macros/Shuttle/AliPHOSCalibHistoProducer.C * **************************************************************************/ -AliHLTPHOSRcuHistogramProducerComponent:: AliHLTPHOSRcuHistogramProducerComponent():AliHLTPHOSProcessor(), fRcuHistoProducerPtr(0) +AliHLTPHOSRcuHistogramProducerComponent:: AliHLTPHOSRcuHistogramProducerComponent() : AliHLTPHOSRcuProcessor(), + fHistoWriteFrequency(100), + fRcuHistoProducerPtr(0), + fOutPtr(0), + fShmPtr(0) { - //Default constructor + fShmPtr = new AliHLTPHOSSharedMemoryInterfacev2(); + //Default constructor } @@ -47,18 +50,14 @@ AliHLTPHOSRcuHistogramProducerComponent::~ AliHLTPHOSRcuHistogramProducerCompone } -AliHLTPHOSRcuHistogramProducerComponent::AliHLTPHOSRcuHistogramProducerComponent(const AliHLTPHOSRcuHistogramProducerComponent & ) : AliHLTPHOSProcessor(), fRcuHistoProducerPtr(0) -{ - -} - - int AliHLTPHOSRcuHistogramProducerComponent::Deinit() { //See html documentation of base class cout << "AliHLTPHOSRcuHistogramProducerComponent::Deinit()" << endl; - fRcuHistoProducerPtr->WriteEnergyHistograms(); + char* arg = new char[9]; + sprintf(arg, "recreate"); + fRcuHistoProducerPtr->WriteAllHistograms(arg); return 0; } @@ -101,58 +100,93 @@ AliHLTPHOSRcuHistogramProducerComponent::GetOutputDataSize(unsigned long& constB } -int AliHLTPHOSRcuHistogramProducerComponent::DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, - AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, - AliHLTUInt32_t& size, vector& outputBlocks ) + +int AliHLTPHOSRcuHistogramProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, const AliHLTComponentBlockData* /*blocks*/, + AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* /*outputPtr*/, + AliHLTUInt32_t& /*size*/, vector& /*outputBlocks*/ ) { - //See html documentation of base class + /* + + cout << " AliHLTPHOSRcuHistogramProducerComponent::Doevent, entering event loop" << endl; + + //See html documentation of base class + + // trigData++; + // trigData--; //shutting up the compiler, we dont use trigData now but will do in near future + + AliHLTComponentTriggerData &trDta = trigData; + trDta.fDataSize++; + trDta.fDataSize--; //shutting up the compiler, we dont use trigData now but will do in near future + + // AliHLTPHOSValidCellDataStruct *currentChannel =0; + + AliHLTPHOSChannelDataStruct *currentChannel =0; + unsigned long ndx = 0; UInt_t offset = 0; UInt_t mysize = 0; UInt_t tSize = 0; const AliHLTComponentBlockData* iter = NULL; + AliHLTPHOSRcuCellEnergyDataStruct *cellDataPtr; AliHLTUInt8_t* outBPtr; - int tmpCnt; for( ndx = 0; ndx < evtData.fBlockCnt; ndx++ ) { + cout << " AliHLTPHOSRcuHistogramProducerComponent::DoEvent, recieved block" << endl; iter = blocks+ndx; - cellDataPtr = (AliHLTPHOSRcuCellEnergyDataStruct*)( iter->fPtr); - tmpCnt = cellDataPtr->fCnt; + if(iter->fDataType != AliHLTPHOSDefinitions::fgkCellEnergyDataType) + { + cout << " AliHLTPHOSRcuHistogramProducerComponent::DoEvent, recieved block of wrong type" << endl; + cout << "evtData.fSize =" << evtData.fStructSize << "evtData.fBlockCnt =" << evtData.fBlockCnt <fPtr); + fShmPtr->SetMemory(cellDataPtr); + currentChannel = fShmPtr->NextChannel(); + + Int_t* tmpDataPtr = 0; + Int_t nSamples = 0; + if(cellDataPtr->fHasRawData == true) { - fRcuHistoProducerPtr->FillEnergy(cellDataPtr->fValidData[i].fX, - cellDataPtr->fValidData[i].fZ, - cellDataPtr->fValidData[i].fGain, - cellDataPtr->fValidData[i].fEnergy); + while(currentChannel != 0) + { + tmpDataPtr = fShmPtr->GetRawData(nSamples); + fRcuHistoProducerPtr->FillEnergy(currentChannel->fX, currentChannel->fZ, currentChannel->fGain, currentChannel->fEnergy); + fRcuHistoProducerPtr->FillLiveChannels(tmpDataPtr, nSamples, currentChannel->fX, currentChannel->fZ,currentChannel->fGain); + currentChannel = fShmPtr->NextChannel(); + } + } + else + { + + Logging(kHLTLogFatal, __FILE__ , IntToChar( __LINE__ ) , "AliHLTPHOSRcuHistogramProducerComponent::We are not pushing raw data, aborting"); + return -1; } } - + outBPtr = outputPtr; fOutPtr = (AliHLTPHOSRcuCellAccumulatedEnergyDataStruct*)outBPtr; const AliHLTPHOSRcuCellAccumulatedEnergyDataStruct &innPtr = fRcuHistoProducerPtr->GetCellAccumulatedEnergies(); - fOutPtr->fModuleID = fModuleID; fOutPtr->fRcuX = fRcuX; fOutPtr->fRcuZ = fRcuZ; - - for(int x=0; x < N_XCOLUMNS_RCU; x ++) + for(int x=0; x < NXCOLUMNSRCU; x ++) { - for(int z=0; z < N_XCOLUMNS_RCU; z ++) + for(int z=0; z < NZROWSRCU; z ++) { - for(int gain =0; gain < N_GAINS; gain ++) + for(int gain =0; gain < NGAINS; gain ++) { fOutPtr->fAccumulatedEnergies[x][z][gain] = innPtr.fAccumulatedEnergies[x][z][gain]; fOutPtr->fHits[x][z][gain] = innPtr.fHits[x][z][gain]; + fOutPtr->fDeadChannelMap[x][z][gain] = innPtr.fDeadChannelMap[x][z][gain]; } } } - - //pushing data to shared output memory mysize += sizeof(AliHLTPHOSRcuCellAccumulatedEnergyDataStruct); AliHLTComponentBlockData bd; FillBlockData( bd ); @@ -173,27 +207,42 @@ int AliHLTPHOSRcuHistogramProducerComponent::DoEvent( const AliHLTComponentEven } fPhosEventCount++; + + if( (fPhosEventCount%fHistoWriteFrequency == 0) && ( fPhosEventCount != 0)) + { + char* arg = new char[9]; + sprintf(arg, "recreate"); + fRcuHistoProducerPtr->WriteAllHistograms(arg); + } + return 0; + + */ return 0; - }//end DoEvent int -AliHLTPHOSRcuHistogramProducerComponent::DoInit( int argc, const char** argv ) +AliHLTPHOSRcuHistogramProducerComponent::DoInit( int /*argc*/, const char** /*argv*/ ) { //See html documentation of base class - fPrintInfo = kFALSE; + // fPrintInfo = kFALSE; int iResult=0; TString argument=""; - iResult = ScanArguments(argc, argv); + + // iResult = ScanArguments(argc, argv); + /* if(fIsSetEquippmentID == kFALSE) { Logging( kHLTLogFatal, "HLT::AliHLTPHOSRcuHistogramProducerComponent::DoInt( int argc, const char** argv )", "Missing argument", "The argument equippmentID is not set: set it with a component argumet like this: -equippmentID "); iResult = -2; } - fRcuHistoProducerPtr = new AliHLTPHOSRcuHistogramProducer( fModuleID, fRcuX, fRcuZ); + */ + + + //fRcuHistoProducerPtr = new AliHLTPHOSRcuHistogramProducer( fModuleID, fRcuX, fRcuZ); + return iResult; @@ -208,3 +257,4 @@ AliHLTPHOSRcuHistogramProducerComponent::Spawn() } +