#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)
{
}
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)
{
}
return *this;
}
+//_______________________________________________________________
+/*void AliACORDECalibData::AddHisto(TH1D *fHist)
+{
+
+
+
+ = (TH1D*)fHist->Clone("hnew");
+
+
+
+
+}
+*/
//________________________________________________________________
AliACORDECalibData::~AliACORDECalibData()
* 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();
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
};
--- /dev/null
+/**************************************************************************
+ * 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 <TTimeStamp.h>
+#include <TObjString.h>
+#include <TList.h>
+#include <TH1F.h>
+
+//
+// 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<TObjString*> (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;
+}
+
--- /dev/null
+//#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
+