#include <TFile.h>
#include <TH1F.h>
#include <TH1I.h>
+#include <TH2F.h>
// --- Standard library ---
#include "AliPHOSEmcRecPoint.h"
#include "AliPHOSRecParticle.h"
#include "AliPHOSTrackSegment.h"
+#include "AliPHOSRawDecoder.h"
ClassImp(AliPHOSQualAssDataMaker)
void AliPHOSQualAssDataMaker::InitRaws()
{
// create Raws histograms in Raws subdir
- TH1F * h0 = new TH1F("hEmcPhosRaws", "EMCA Raws in PHOS", 100, 0., 100.) ;
+ TH1I * h0 = new TH1I("hPhosModules", "Hits in EMCA PHOS modules", 6, 0, 6) ;
h0->Sumw2() ;
Add2RawsList(h0, 0) ;
+ const Int_t modMax = 5 ;
+ TH2I * h1[modMax] ;
+ for (Int_t mod = 0; modMax < 5; mod++) {
+ char name[16] ;
+ sprintf(name, "hPHOSMod%d", mod) ;
+ char title[32] ;
+ sprintf(title, "Raws x Columns for PHOS module %d", mod) ;
+ h1[mod] = new TH2I(name, title, 64, -5, 59, 76, -5, 71) ;
+ Add2RawsList(h1[mod], mod+1) ;
+ }
+ TH1F * h6 = new TH1F("hPhosRawtime", "Time of raw hits in PHOS", 100, 0, 100.) ;
+ h6->Sumw2() ;
+ Add2RawsList(h6, 6) ;
+ TH1F * h7 = new TH1F("hPhosRawEnergy", "Energy of raw hits in PHOS", 1100, 0, 1023) ;
+ h7->Sumw2() ;
+ Add2RawsList(h7, 7) ;
+
}
//____________________________________________________________________________
}
//____________________________________________________________________________
-void AliPHOSQualAssDataMaker::MakeHits(TObject * data)
+void AliPHOSQualAssDataMaker::MakeHits(TClonesArray * hits)
{
//make QA data from Hits
- TClonesArray * hits = dynamic_cast<TClonesArray *>(data) ;
- if (!hits) {
- AliError("Wrong type of hits container") ;
- } else {
GetHitsData(1)->Fill(hits->GetEntriesFast()) ;
TIter next(hits) ;
AliPHOSHit * hit ;
while ( (hit = dynamic_cast<AliPHOSHit *>(next())) ) {
GetHitsData(0)->Fill( hit->GetEnergy()) ;
}
- }
}
//____________________________________________________________________________
-void AliPHOSQualAssDataMaker::MakeDigits(TObject * data)
+void AliPHOSQualAssDataMaker::MakeDigits(TClonesArray * digits)
{
// makes data from Digits
- TClonesArray * digits = dynamic_cast<TClonesArray *>(data) ;
- if (!digits) {
- AliError("Wrong type of digits container") ;
- } else {
GetDigitsData(1)->Fill(digits->GetEntriesFast()) ;
TIter next(digits) ;
AliPHOSDigit * digit ;
while ( (digit = dynamic_cast<AliPHOSDigit *>(next())) ) {
GetDigitsData(0)->Fill( digit->GetEnergy()) ;
}
- }
}
//____________________________________________________________________________
// }
//____________________________________________________________________________
-void AliPHOSQualAssDataMaker::MakeRaws(TObject * data)
+void AliPHOSQualAssDataMaker::MakeRaws(AliRawReader* rawReader)
{
- GetRawsData(1)->Fill(99) ;
+ rawReader->Reset() ;
+ AliPHOSRawDecoder decoder(rawReader);
+ while (decoder.NextDigit()) {
+ Int_t module = decoder.GetModule() ;
+ Int_t row = decoder.GetRow() ;
+ Int_t col = decoder.GetColumn() ;
+ Double_t time = decoder.GetTime() ;
+ Double_t energy = decoder.GetEnergy() ;
+ GetRawsData(0)->Fill(module) ;
+ GetRawsData(module+1)->Fill(row, col) ;
+ GetRawsData(6)->Fill(time) ;
+ GetRawsData(7)->Fill(energy) ;
+ }
}
//____________________________________________________________________________
}
//____________________________________________________________________________
-void AliPHOSQualAssDataMaker::MakeSDigits(TObject * data)
+void AliPHOSQualAssDataMaker::MakeSDigits(TClonesArray * sdigits)
{
// makes data from SDigits
- TClonesArray * sdigits = dynamic_cast<TClonesArray *>(data) ;
- if (!sdigits) {
- AliError("Wrong type of sdigits container") ;
- } else {
- GetSDigitsData(1)->Fill(sdigits->GetEntriesFast()) ;
+ GetSDigitsData(1)->Fill(sdigits->GetEntriesFast()) ;
TIter next(sdigits) ;
AliPHOSDigit * sdigit ;
while ( (sdigit = dynamic_cast<AliPHOSDigit *>(next())) ) {
GetSDigitsData(0)->Fill( sdigit->GetEnergy()) ;
}
- }
}
//____________________________________________________________________________
#include <TFile.h>
#include <TList.h>
#include <TTree.h>
+#include <TClonesArray.h>
// --- Standard library ---
#include "AliLog.h"
#include "AliQualAssDataMaker.h"
#include "AliESDEvent.h"
+#include "AliRawReader.h"
ClassImp(AliQualAssDataMaker)
switch (task) {
case AliQualAss::kRAWS:
+ {
AliInfo("Processing Raws QA") ;
- MakeRaws(data) ;
+ AliRawReader * rawReader = dynamic_cast<AliRawReader *>(data) ;
+ if (rawReader)
+ MakeRaws(rawReader) ;
+ else
+ AliError("Wrong data type") ;
break ;
-
+ }
case AliQualAss::kHITS:
- AliInfo("Processing Hits QA") ;
- MakeHits(data) ;
+ {
+ AliInfo("Processing Hits QA") ;
+ TClonesArray * hits = dynamic_cast<TClonesArray *>(data) ;
+ if (hits)
+ MakeHits(hits) ;
+ else
+ AliError("Wrong type of hits container") ;
break ;
-
+ }
case AliQualAss::kSDIGITS:
+ {
AliInfo("Processing SDigits QA") ;
- MakeSDigits(data) ;
+ TClonesArray * sdigits = dynamic_cast<TClonesArray *>(data) ;
+ if (sdigits)
+ MakeSDigits(sdigits) ;
+ else
+ AliError("Wrong type of sdigits container") ;
break ;
-
+ }
case AliQualAss::kDIGITS:
- MakeDigits(data) ;
+ {
+ TClonesArray * digits = dynamic_cast<TClonesArray *>(data) ;
+ if (digits)
+ MakeDigits(digits) ;
+ else
+ AliError("Wrong type of digits container") ;
break ;
-
- case AliQualAss::kRECPOINTS:
- {
+ }
+ case AliQualAss::kRECPOINTS:
+ {
AliInfo("Processing RecPoints QA") ;
TTree * recpoints = dynamic_cast<TTree *>(data) ;
if (recpoints)
else
AliError("Wrong type of recpoints container") ;
break ;
- }
+ }
case AliQualAss::kTRACKSEGMENTS:
AliInfo("Processing Track Segments QA: not existing anymore") ;
// TTree * ts = dynamic_cast<TTree *>(data) ;
class TObject;
class TTree;
class AliESDEvent;
+class AliRawReader;
+class TClonesArray;
// --- Standard library ---
virtual void InitSDigits() {AliInfo("To be implemented by detectors");}
//virtual void InitTrackSegments() {AliInfo("To ne implemented by detectors");}
virtual void MakeESDs(AliESDEvent * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeHits(TObject * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeDigits(TObject * ) {AliInfo("To be implemented by detectors");}
+ virtual void MakeHits(TClonesArray * ) {AliInfo("To be implemented by detectors");}
+ virtual void MakeDigits(TClonesArray * ) {AliInfo("To be implemented by detectors");}
// virtual void MakeRecParticles(TClonesArray * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeRaws(TObject * ) {AliInfo("To be implemented by detectors");}
+ virtual void MakeRaws(AliRawReader *) {AliInfo("To be implemented by detectors");}
virtual void MakeRecPoints(TTree * ) {AliInfo("To be implemented by detectors");}
- virtual void MakeSDigits(TObject * ) {AliInfo("To be implemented by detectors");}
+ virtual void MakeSDigits(TClonesArray * ) {AliInfo("To be implemented by detectors");}
//virtual void MakeTrackSegments(TTree * ) {AliInfo("To be implemented by detectors");}
void ResetCycle() { fCycleCounter = 0 ; }
virtual void StartOfDetectorCycle() {AliInfo("To be implemented by detectors");}