#include "AliQAChecker.h"
#include "AliESDFMD.h"
#include "AliFMDParameters.h"
+#include "AliFMDRawReader.h"
+#include "AliRawReader.h"
//_____________________________________________________________________
// This is the class that collects the QA data for the FMD during
// reconstruction.
//
// The following data types are picked up:
-// - digits
// - rec points
// - esd data
-// The following data types are not supported (yet):
// - raws
// Author : Hans Hjersing Dalsgaard, hans.dalsgaard@cern.ch
//_____________________________________________________________________
//_____________________________________________________________________
AliFMDQADataMakerRec::AliFMDQADataMakerRec() :
AliQADataMakerRec(AliQA::GetDetName(AliQA::kFMD),
- "FMD Quality Assurance Data Maker")
+ "FMD Quality Assurance Data Maker"),
+ fDigitsArray("AliFMDDigit", 0),
+ fRecPointsArray("AliFMDRecPoint", 1000)
{
// ctor
+
}
//_____________________________________________________________________
-AliFMDQADataMakerRec::AliFMDQADataMakerRec(const AliFMDQADataMakerRec& qadm) :
- AliQADataMakerRec()
+AliFMDQADataMakerRec::AliFMDQADataMakerRec(const AliFMDQADataMakerRec& qadm)
+ : AliQADataMakerRec(AliQA::GetDetName(AliQA::kFMD),
+ "FMD Quality Assurance Data Maker"),
+ fDigitsArray(qadm.fDigitsArray),
+ fRecPointsArray(qadm.fRecPointsArray)
{
- //copy ctor
+ // copy ctor
// Parameters:
// qadm Object to copy from
}
+//_____________________________________________________________________
+AliFMDQADataMakerRec& AliFMDQADataMakerRec::operator = (const AliFMDQADataMakerRec& qadm )
+{
+ fDigitsArray = qadm.fDigitsArray;
+ fRecPointsArray = qadm.fRecPointsArray;
+
+ return *this;
+}
+//_____________________________________________________________________
+AliFMDQADataMakerRec::~AliFMDQADataMakerRec()
+{
+
+}
//_____________________________________________________________________
void
-AliFMDQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX task,
+AliFMDQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX_t task,
TObjArray * list)
{
// Detector specific actions at end of cycle
// do the QA checking
- AliLog::Message(5,"FMD: end of detector cycle","AliFMDQADataMakerRec","AliFMDQADataMakerRec","AliFMDQADataMakerRec::EndOfDetectorCycle","AliFMDQADataMakerRec.cxx",95);
+ AliLog::Message(5,"FMD: end of detector cycle",
+ "AliFMDQADataMakerRec","AliFMDQADataMakerRec",
+ "AliFMDQADataMakerRec::EndOfDetectorCycle",
+ "AliFMDQADataMakerRec.cxx",95);
AliQAChecker::Instance()->Run(AliQA::kFMD, task, list);
}
}
//_____________________________________________________________________
-void AliFMDQADataMakerRec::InitDigits()
+/*void AliFMDQADataMakerRec::InitDigits()
{
// create Digits histograms in Digits subdir
TH1I* hADCCounts = new TH1I("hADCCounts","Dist of ADC counts",
1024,0,1024);
- // TH1F* hEnergyOfDigits = new TH1F("hEnergyOfDigits", "Energy distribution",
- // 100,0,3);
hADCCounts->SetXTitle("ADC counts");
hADCCounts->SetYTitle("");
- // hEnergyOfDigits->SetXTitle("Edep/Emip");
- // hEnergyOfDigits->SetYTitle("Counts");
Add2DigitsList(hADCCounts, 0);
- // Add2DigitsList(hEnergyOfDigits, 1);
}
-
+*/
//_____________________________________________________________________
void AliFMDQADataMakerRec::InitRecPoints()
{
//_____________________________________________________________________
void AliFMDQADataMakerRec::InitRaws()
{
-
+ TH1I* hADCCounts = new TH1I("hADCCounts","Dist of ADC counts",
+ 1024,0,1023);
+ hADCCounts->SetXTitle("ADC counts");
+ hADCCounts->SetYTitle("");
+ Add2RawsList(hADCCounts, 0);
+
}
//_____________________________________________________________________
}
}
+/*
//_____________________________________________________________________
void AliFMDQADataMakerRec::MakeDigits(TClonesArray * digits)
{
// makes data from Digits
if(!digits) {
- AliError("FMD Digit object not found!!") ;
- return;
+ AliError("FMD Digit object not found!!") ;
+ return;
}
- for(Int_t i=0;i<digits->GetEntries();i++) {
+ for(Int_t i=0;i<digits->GetEntriesFast();i++) {
//Raw ADC counts
AliFMDDigit* digit = static_cast<AliFMDDigit*>(digits->At(i));
GetDigitsData(0)->Fill(digit->Counts());
void AliFMDQADataMakerRec::MakeDigits(TTree * digitTree)
{
- TClonesArray* digits = new TClonesArray("AliFMDDigit", 1000) ;
- TBranch* branch = digitTree->GetBranch("FMD") ;
- if (!branch ) {
+ fDigitsArray.Clear();
+ TBranch* branch = digitTree->GetBranch("FMD");
+ if (!branch) {
AliWarning("FMD branch in Digit Tree not found") ;
return;
}
-
- branch->SetAddress(&digits) ;
- branch->GetEntry(0) ;
- MakeDigits(digits) ;
+ TClonesArray* digitsAddress = &fDigitsArray;
+ branch->SetAddress(&digitsAddress);
+ branch->GetEntry(0);
+ MakeDigits(digitsAddress);
}
-
+*/
//_____________________________________________________________________
void AliFMDQADataMakerRec::MakeRaws(AliRawReader* rawReader)
{
+
+ AliFMDRawReader fmdReader(rawReader,0);
+ TClonesArray* digitsAddress = &fDigitsArray;
+ rawReader->Reset();
+
+ digitsAddress->Clear();
+ fmdReader.ReadAdcs(digitsAddress);
+ for(Int_t i=0;i<digitsAddress->GetEntriesFast();i++) {
+ //Raw ADC counts
+ AliFMDDigit* digit = static_cast<AliFMDDigit*>(digitsAddress->At(i));
+ GetRawsData(0)->Fill(digit->Counts());
+ }
}
//_____________________________________________________________________
void AliFMDQADataMakerRec::MakeRecPoints(TTree* clustersTree)
{
// makes data from RecPoints
+ AliFMDParameters* pars = AliFMDParameters::Instance();
+ fRecPointsArray.Clear();
TBranch *fmdbranch = clustersTree->GetBranch("FMD");
if (!fmdbranch) {
AliError("can't get the branch with the FMD recpoints !");
return;
}
- TClonesArray * fmdrecpoints = new TClonesArray("AliFMDRecPoint", 1000) ;
- fmdbranch->SetAddress(&fmdrecpoints);
+ TClonesArray* RecPointsAddress = &fRecPointsArray;
+
+ fmdbranch->SetAddress(&RecPointsAddress);
fmdbranch->GetEntry(0);
-
- TIter next(fmdrecpoints) ;
+ TIter next(RecPointsAddress) ;
AliFMDRecPoint * rp ;
while ((rp = static_cast<AliFMDRecPoint*>(next()))) {
- GetRecPointsData(0)->Fill(rp->Particles()) ;
+
+ GetRecPointsData(0)->Fill(rp->Edep()/pars->GetEdepMip()) ;
+
}
- fmdrecpoints->Delete();
- delete fmdrecpoints;
}