From 68f6519c978ee7d0f889e6e3dbf947428a8a6442 Mon Sep 17 00:00:00 2001 From: mrodrigu Date: Wed, 20 Feb 2008 13:08:03 +0000 Subject: [PATCH] Updated (Pedro Glz) --- ACORDE/ACORDEbaseLinkDef.h | 1 + ACORDE/AliACORDECalibData.cxx | 51 +++++++- ACORDE/AliACORDECalibData.h | 13 ++ ACORDE/AliACORDEPreprocessor.cxx | 196 +++++++++++++++++++++++++++++++ ACORDE/AliACORDEPreprocessor.h | 35 ++++++ ACORDE/libACORDEbase.pkg | 2 +- 6 files changed, 296 insertions(+), 2 deletions(-) create mode 100644 ACORDE/AliACORDEPreprocessor.cxx create mode 100644 ACORDE/AliACORDEPreprocessor.h diff --git a/ACORDE/ACORDEbaseLinkDef.h b/ACORDE/ACORDEbaseLinkDef.h index 1e79e7e57a7..b4ffbd90cd0 100644 --- a/ACORDE/ACORDEbaseLinkDef.h +++ b/ACORDE/ACORDEbaseLinkDef.h @@ -13,5 +13,6 @@ #pragma link C++ class AliACORDELoader+; #pragma link C++ class AliGenACORDE+; #pragma link C++ class AliACORDECalibData+; +#pragma link C++ class AliACORDEPreprocessor+; #endif diff --git a/ACORDE/AliACORDECalibData.cxx b/ACORDE/AliACORDECalibData.cxx index 6f575347d3b..37a4739edbd 100644 --- a/ACORDE/AliACORDECalibData.cxx +++ b/ACORDE/AliACORDECalibData.cxx @@ -17,11 +17,24 @@ #include "AliACORDECalibData.h" +#include "TList.h" +#include "TCanvas.h" ClassImp(AliACORDECalibData) +TH1D *fHits; + TH1D *fTHits; + TH1D *fMultiHits; + TH1D *fTMultiHits; + + + //________________________________________________________________ -AliACORDECalibData::AliACORDECalibData() +AliACORDECalibData::AliACORDECalibData(): +fHits(0), +fTHits(0), +fMultiHits(0), +fTMultiHits(0) { } @@ -58,7 +71,30 @@ AliACORDECalibData::AliACORDECalibData(const AliACORDECalibData& calibda) : fRates[t] = calibda.GetRate(t+1); } } +//_______________________________________________________________ +void AliACORDECalibData::Draw() +{ + + + //fHits->Draw(); + + + TCanvas *ch; + TString canvasHistoName="Histos"; + ch=new TCanvas(canvasHistoName,canvasHistoName,20,20,600,600); + ch->Divide(2,2); + ch->cd(1); + fHits->Draw(); + ch->cd(2); + fTHits->Draw(); + ch->cd(3); + fMultiHits->Draw(); + ch->cd(4); + fTMultiHits->Draw(); + + +} //________________________________________________________________ AliACORDECalibData &AliACORDECalibData::operator =(const AliACORDECalibData& calibda) { @@ -74,6 +110,19 @@ AliACORDECalibData &AliACORDECalibData::operator =(const AliACORDECalibData& cal } return *this; } +//_______________________________________________________________ +/*void AliACORDECalibData::AddHisto(TH1D *fHist) +{ + + + + = (TH1D*)fHist->Clone("hnew"); + + + + +} +*/ //________________________________________________________________ AliACORDECalibData::~AliACORDECalibData() diff --git a/ACORDE/AliACORDECalibData.h b/ACORDE/AliACORDECalibData.h index 71755ea2752..6ff7924426b 100644 --- a/ACORDE/AliACORDECalibData.h +++ b/ACORDE/AliACORDECalibData.h @@ -5,11 +5,13 @@ * See cxx source for full Copyright notice */ #include "TNamed.h" +#include "TH1D.h" class AliACORDECalibData: public TNamed { public: AliACORDECalibData(); AliACORDECalibData(const char* name); + AliACORDECalibData(const AliACORDECalibData &calibda); AliACORDECalibData& operator= (const AliACORDECalibData &calibda); virtual ~AliACORDECalibData(); @@ -19,14 +21,25 @@ class AliACORDECalibData: public TNamed { Float_t GetEfficiency(Int_t i) const { return fEfficiencies[i-1];} Float_t* GetRates() const {return (float*)fRates;} Float_t GetRate(Int_t i) const {return fRates[i-1];} + // TList* GetHistos()const {return Hist;} void SetRates(Float_t* Rt); void SetRate(Float_t rate, Int_t mod){fRates[mod-1]=rate;} void SetEfficiencies(Float_t* Eff); void SetEfficiency(Float_t eff, Int_t mod) {fEfficiencies[mod-1]=eff;} + void AddHHits(TH1D *Histo){fHits=(TH1D*)Histo->Clone("Hits");}// Hits + void AddHTHits(TH1D *Histo){fTHits=(TH1D*)Histo->Clone("Total Hits");}//Total Hits + void AddHMultiHits(TH1D *Histo){fMultiHits=(TH1D*)Histo->Clone("MultiHits");}// + void AddHTMultiHits(TH1D *Histo){fTMultiHits=(TH1D*)Histo->Clone("Total Multi Hits");} + void Draw(); + protected: Float_t fEfficiencies[60]; Float_t fRates[60]; + TH1D *fHits; + TH1D *fTHits; + TH1D *fMultiHits; + TH1D *fTMultiHits; ClassDef(AliACORDECalibData,1) // ACORDE Calibration data }; diff --git a/ACORDE/AliACORDEPreprocessor.cxx b/ACORDE/AliACORDEPreprocessor.cxx new file mode 100644 index 00000000000..b5d4305889b --- /dev/null +++ b/ACORDE/AliACORDEPreprocessor.cxx @@ -0,0 +1,196 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + + + +#include "AliACORDEPreprocessor.h" +#include "TRandom.h" +#include "TFile.h" +#include "AliCDBMetaData.h" +#include "AliCDBEntry.h" +#include "AliLog.h" +#include "AliACORDECalibData.h" + +#include +#include +#include +#include + +// +// This is the first version of ACORDE Preprocessor +// It takes data from DAQ and passes it to the class AliACORDECalibModule and +// stores reference data. +// +// Authors +// Pedro Gonzalez pedro.gonzalez@fcfm.buap.mx +// Irais Bautista irais@fcfm.buap.mx +// Arturo Fernandez Tellez afernan@cern.ch + +ClassImp(AliACORDEPreprocessor) + +//______________________________________________________________________________________________ +AliACORDEPreprocessor::AliACORDEPreprocessor(AliShuttleInterface* shuttle) : + AliPreprocessor("ACO", shuttle), + fCalData(0) +{ + // constructor +} + +//______________________________________________________________________________________________ +AliACORDEPreprocessor::~AliACORDEPreprocessor() +{ + // destructor +} + +//______________________________________________________________________________________________ +void AliACORDEPreprocessor::Initialize(Int_t run, UInt_t startTime, + UInt_t endTime) +{ + // Creates AliACORDECalibModule object + + AliPreprocessor::Initialize(run, startTime, endTime); + + Log(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", run, + TTimeStamp(startTime).AsString(), + TTimeStamp(endTime).AsString())); + + fCalData = new AliACORDECalibData(); +} + +//______________________________________________________________________________________________ +UInt_t AliACORDEPreprocessor::Process(TMap* /*dcsAliasMap*/) +{ + + + + + TH1D *fH1,*fH2,*fH3,*fH4; //Histogram of the rates per module + TFile *daqFile=0x0; + + + // retrieve the run type from the Shuttle, + + + TString runType = GetRunType(); + + + //acorde STANDALONE_BC + //acorde STANDALONE_PULSER + + if(runType !="STANDALONE_PULSER") + { + + Log("RunType is not STANDALONE_PULSER, nothing to do"); + return 1; + + } + + + Log(Form("Run type for run %d: %s", fRun, runType.Data())); + TString SourcesId = "CALIB"; + + + + //retrieve the list of sources that produced the file with id RATES + + TList* sourceList = GetFileSources(kDAQ,SourcesId.Data()); + + if (!sourceList) + { + Log(Form("Error: No sources found for id %s", SourcesId.Data())); + return 2; + } + + // TODO We have the list of sources that produced the files with Id RATES + // Now we will loop on the list and we'll query the files one by one. + + + + Log(Form("The following sources produced files with the id %s",SourcesId.Data())); + sourceList->Print(); + + TIter iter(sourceList); + TObjString *source = 0; + + + + while((source=dynamic_cast (iter.Next()))) + { + + TString fileName = GetFile(kDAQ,SourcesId.Data(), source->GetName()); + + if (fileName.Length() > 0) + Log(Form("Got the file %s, now we can extract some values.", fileName.Data())); + + daqFile = new TFile(fileName.Data(),"READ"); + + if(!daqFile) + { + + Log(Form("There are not histos 1")); + return 3; + + } + + + + fH1 = (TH1D*)daqFile->Get("fHist1"); + fH2 = (TH1D*)daqFile->Get("fHist2"); + fH3 = (TH1D*)daqFile->Get("fHist3"); + fH4 = (TH1D*)daqFile->Get("fHist4"); + + + + if(fH1!=NULL&&fH2!=NULL&&fH3!=NULL&&fH4!=NULL) + { + fCalData->AddHHits(fH1); + fCalData->AddHTHits(fH2); + fCalData->AddHMultiHits(fH3); + fCalData->AddHTMultiHits(fH4); + } + + else + { + Log(Form("There are not histos 2")); + return 4; + } + + + } + + + + delete sourceList; + + + //Now we have to store + + AliCDBMetaData metaData; + metaData.SetBeamPeriod(0); + metaData.SetResponsible("Pedro and Irais"); + metaData.SetComment("This preprocessor fills an AliACORDECalibModule object."); + + Bool_t result = StoreReferenceData("Calib", "Data",fCalData, &metaData); + + delete fCalData; + fCalData = 0; + + + if (!result) + return 4; + + return 0; +} + diff --git a/ACORDE/AliACORDEPreprocessor.h b/ACORDE/AliACORDEPreprocessor.h new file mode 100644 index 00000000000..3820c114fff --- /dev/null +++ b/ACORDE/AliACORDEPreprocessor.h @@ -0,0 +1,35 @@ +//#ifndef ALI_ACORDE_PREPROCESSOR_H +//#define ALI_ACORDE_PREPROCESSOR_H +#ifndef ALIACORDEPREPROCESSOR_H +#define AliACORDEPREPROCESSOR_H + +#include "AliPreprocessor.h" + +// test preprocessor that writes data to AliACORDECalibModule + +class AliACORDECalibData; + +class AliACORDEPreprocessor : public AliPreprocessor +{ + public: + enum{kNModules=60}; + AliACORDEPreprocessor(AliShuttleInterface* shuttle); + virtual ~AliACORDEPreprocessor(); + + protected: + virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime); + virtual UInt_t Process(TMap* dcsAliasMap); + void CreateTableofReference(); + //virtual Bool_t ProcessDCS(); + + private: + + AliACORDEPreprocessor(const AliACORDEPreprocessor &proc); //copy constructor + AliACORDEPreprocessor& operator = (const AliACORDEPreprocessor & proc); + AliACORDECalibData *fCalData; // CDB class that stores the data + + ClassDef(AliACORDEPreprocessor, 0); +}; + +#endif + diff --git a/ACORDE/libACORDEbase.pkg b/ACORDE/libACORDEbase.pkg index 6d2e6523c61..b264cf7a5f3 100644 --- a/ACORDE/libACORDEbase.pkg +++ b/ACORDE/libACORDEbase.pkg @@ -1,5 +1,5 @@ SRCS = AliACORDE.cxx AliACORDEConstants.cxx AliACORDECalibData.cxx \ - AliGenACORDE.cxx AliACORDELoader.cxx + AliGenACORDE.cxx AliACORDELoader.cxx AliACORDEPreprocessor.cxx HDRS:= $(SRCS:.cxx=.h) -- 2.43.0