#include "AliMpDetElement.h"
#include "AliMpManuIterator.h"
#include "AliQAv1.h"
-#include "AliRawEquipment.h"
-#include "AliRawEquipmentHeader.h"
-#include "AliRawEventHeaderBase.h"
#include "AliRawReader.h"
-#include "AliRawVEvent.h"
+#include "AliRawEventHeaderBase.h"
#include <Riostream.h>
#include <TH1F.h>
#include <TH1I.h>
Double_t nbuspatches = fBusPatchConfig->GetEntries();
- hrostatus->Fill(1.0*AliMUONQAIndices::kTrackerRawNofMissingBusPatchesFromConfig,nofBusPatchesNotInConfig*nevents/nbuspatches);
+ Int_t bin = hrostatus->FindBin(1.0*AliMUONQAIndices::kTrackerRawNofMissingBusPatchesFromConfig);
+ hrostatus->SetBinContent(bin,nofBusPatchesNotInConfig*nevents/nbuspatches);
Double_t nofBusPatchesNotInData(0);
if ( !data->HasBusPatch(bp->GetId()) ) ++nofBusPatchesNotInData;
}
- hrostatus->Fill(1.0*AliMUONQAIndices::kTrackerRawNofMissingBusPatchesFromDataStream,nofBusPatchesNotInData*nevents/nbuspatches);
+ bin = hrostatus->FindBin(1.0*AliMUONQAIndices::kTrackerRawNofMissingBusPatchesFromDataStream);
+ hrostatus->SetBinContent(bin,nofBusPatchesNotInData*nevents/nbuspatches);
}
//____________________________________________________________________________
-void AliMUONTrackerQADataMakerRec::FillEventSize(const AliRawVEvent* cevent)
+void AliMUONTrackerQADataMakerRec::FillEventSize(AliRawReader* rawReader)
{
/// Fill event size histogram(s)
- if (!cevent)
- {
- AliError("Got a null cevent...");
- return;
- }
-
- AliRawVEvent* event = const_cast<AliRawVEvent*>(cevent); // not good, but the Get*Event() methods are not const...
-
TH1* hnevents = GetRawsData(AliMUONQAIndices::kTrackerNofPhysicsEventsSeen);
TH1* hddlevents = GetRawsData(AliMUONQAIndices::kTrackerDDLNofEventsSeen);
TH1* hDDLEventSize = GetRawsData(AliMUONQAIndices::kTrackerDDLEventSize);
- Double_t eventSize = 0;
-
hnevents->Fill(0.0);
- for ( int i = 0; i < event->GetNSubEvents(); ++i )
+ Int_t offset = AliDAQ::DdlIDOffset("MUONTRK");
+
+ for ( int i = 0; i < AliDAQ::NumberOfDdls("MUONTRK"); ++i )
{
- AliRawVEvent* sub = event->GetSubEvent(i);
-
- for ( int j = 0; j < sub->GetNEquipments(); ++j )
+ rawReader->Reset();
+ rawReader->Select("MUONTRK",i,i);
+ if (rawReader->ReadHeader() )
{
- AliRawVEquipment* eq = sub->GetEquipment(j);
-
- AliRawEquipmentHeader* equipmentHeader = eq->GetEquipmentHeader();
-
- UInt_t uid = equipmentHeader->GetId();
-
- int index;
-
- TString det(AliDAQ::DetectorNameFromDdlID(uid,index));
-
- if (det=="MUONTRK")
- {
- UInt_t ddlsize = equipmentHeader->GetEquipmentSize();
- hDDLEventSize->Fill(uid,ddlsize);
- hddlevents->Fill(uid);
- eventSize += ddlsize;
- }
- }
- }
+ UInt_t ddlsize = rawReader->GetEquipmentSize();
+ hDDLEventSize->Fill(i+offset,ddlsize);
+ hddlevents->Fill(i+offset);
+ }
+ }
+ rawReader->Reset();
}
//____________________________________________________________________________
// for raw data, we differentiate events seen from events used to be able to detect
// severe decoder errors that lead to no event decoded (i.e. zero event used) even if
// events are there (i.e non-zero event seen).
- hnevents = new TH1F("kTrackerNofPhysicsEventsSeen","Number of physics events seen",1,-0.5,0.5);
+ hnevents = new TH1F("hTrackerNofPhysicsEventsSeen","Number of physics events seen",1,-0.5,0.5);
// this one will count the number of physics event the rawdatamaker is *seeing*
TAxis* a = hnevents->GetXaxis();
a->SetBinLabel(1,"NPhysicsEvents");
Master()->Add2List(hnevents,AliMUONQAIndices::kTrackerNofPhysicsEventsSeen,task,expert,!image,!saveCorr);
}
- hnevents = new TH1F("kTrackerNofGoodPhysicsEventsUsed","Number of good physics events used",1,-0.5,0.5);
+ hnevents = new TH1F("hTrackerNofGoodPhysicsEventsUsed","Number of good physics events used",1,-0.5,0.5);
// this one will get its content from the TrackerData, i.e. it will count the number of *good* physics events *used*
// (i.e. not empty and with no fatal readout error)
TAxis* a = hnevents->GetXaxis();
h->SetStats(kFALSE);
Add2RawsList(h,AliMUONQAIndices::kTrackerDDLEventSizePerEvent,kFALSE,kTRUE,kFALSE);
+ Add2RawsList(new TH1F("hTrackerIsThere","tracker is there",1,0,1),AliMUONQAIndices::kTrackerIsThere,kTRUE,kFALSE,kFALSE);
}
//__________________________________________________________________
AliCodeTimerAuto("",0);
+ if ( GetRecoParam()->TryRecover() )
+ {
+ fDigitMaker->SetTryRecover(kTRUE);
+ }
+ else
+ {
+ fDigitMaker->SetTryRecover(kFALSE);
+ }
+
TrackerCalData(AliRecoParam::AConvert(Master()->GetEventSpecie()),kTRUE);
/// Book histograms that are common to Raws and Digits
AliCodeTimerAuto(Form("%s",AliRecoParam::GetEventSpecieName(AliRecoParam::AConvert(Master()->GetEventSpecie()))),0);
- AliInfo(Form("rawReader class=%s",rawReader->ClassName()));
-
/// forces init
GetRawsData(AliMUONQAIndices::kTrackerBusPatchOccupancy);
{
dm->ProcessEvent();
- FillEventSize(rawReader->GetEvent());
-
+ FillEventSize(rawReader);
+
if ( dm->LastEventWasEmpty() )
{
TH1* hrostatus = GetRawsData(AliMUONQAIndices::kTrackerReadoutStatus);
{
TString hn(h->GetName());
- if ( hn.Contains("Tracker") )
+ if ( !hn.Contains("TrackerBusPatchConfig") )
{
- if ( !hn.Contains("hTrackerBusPatchNofPads") &&
- !hn.Contains("hTrackerBusPatchConfig" ) )
- {
- AliDebug(1,Form("Resetting %s",hn.Data()));
- h->Reset();
- }
+ AliDebug(1,Form("Resetting %s",hn.Data()));
+
+ h->Reset();
}
else
{
- AliDebug(1,Form("Will not reset histogram %s",hn.Data()));
+ AliDebug(1,Form("Will not reset histogram %s",hn.Data()));
}
}
else
if (array)
{
- array->SetOwner(kFALSE); // as the tracker data will be attached to fQADigitsList which will become the owner
o = array->At(specieIndex);
if (!o && create)
{
if (array)
{
- array->SetOwner(kFALSE); // as the tracker data will be attached to fQARecPointsList which will become the owner
o = array->At(specieIndex);
if (!o && create)
{
if (array)
{
- array->SetOwner(kTRUE);
o = array->At(specieIndex);
+ array->SetOwner(kTRUE);
if (!o && create)
{
AliMUONQAMappingCheck* mcheck = new AliMUONQAMappingCheck(RunNumber());