#include "AliOADBFillingScheme.h"
#include "AliOADBTriggerAnalysis.h"
+using std::cout;
+using std::endl;
ClassImp(AliPhysicsSelection)
AliPhysicsSelection::AliPhysicsSelection() :
// if(fHistStatisticsTokens)
}
}
-
+
TFormula formula("formula", trigger);
+ if (formula.Compile() > 0)
+ AliFatal(Form("Could not evaluate trigger logic %s (evaluated to %s)", triggerLogic, trigger.Data()));
Bool_t result = formula.Eval(0);
AliDebug(AliLog::kDebug, Form("%s --> %d", trigger.Data(), result));
Bool_t v0ABG = fSkipV0 ? 0 : triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kV0ABG));
Bool_t v0CBG = fSkipV0 ? 0 : triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kV0CBG));
Bool_t v0BG = v0ABG || v0CBG;
+ Bool_t t0 = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kT0 ));
+ Bool_t t0BG = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kT0BG ));
+ Bool_t t0PileUp = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kT0Pileup));
// fmd
// Bool_t fmdA = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kFMDA));
Bool_t zdcA = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kZDCTDCA));
Bool_t zdcC = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kZDCTDCC));
Bool_t zdcTime = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kZDCTime));
+ Bool_t znABG = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kZNABG));
+ Bool_t znCBG = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kZNCBG));
Bool_t laserCut = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kTPCLaserWarmUp));
+ Bool_t hvDipCut = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kTPCHVdip));
// Some "macros"
Bool_t mb1 = (fastOROffline > 0 || v0A || v0C) && (!v0BG);
if(fmd) ntrig += 1;
if(ssdClusters>1) ntrig += 1;*/
+ // // EMCAL offline trigger validation
+ // Bool_t emcCut = triggerAnalysis->EvaluateTrigger(aEsd, (AliTriggerAnalysis::Trigger) (AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kEMCAL));
// <---
if (v0CBG)
fHistStatistics[iHistStat]->Fill(kStatV0CBG, i);
+ // T0 stats
+ if(t0)
+ fHistStatistics[iHistStat]->Fill(kStatT0BB, i);
+ if(t0BG)
+ fHistStatistics[iHistStat]->Fill(kStatT0BG, i);
+ if(t0PileUp)
+ fHistStatistics[iHistStat]->Fill(kStatT0PileUp, i);
+
// mb 1
if (mb1)
fHistStatistics[iHistStat]->Fill(kStatMB1, i);
if (laserCut)
fHistStatistics[iHistStat]->Fill(kStatLaserCut, i);
+ if (hvDipCut)
+ fHistStatistics[iHistStat]->Fill(kHVdipCut, i);
+
//if(ntrig >= 2 && !v0BG)
// fHistStatistics[iHistStat]->Fill(kStatAny2Hits, i);
if (zdcTime)
fHistStatistics[iHistStat]->Fill(kStatZDCTime, i);
+ if (znABG)
+ fHistStatistics[iHistStat]->Fill(kStatZNABG, i);
+ if (znCBG)
+ fHistStatistics[iHistStat]->Fill(kStatZNCBG, i);
if (v0A && v0C && !v0BG && (!bgID && fIsPP))
fHistStatistics[iHistStat]->Fill(kStatV0, i);
+ if (v0A && v0C && !v0BG && (!bgID && fIsPP) && !znABG && !znCBG)
+ fHistStatistics[iHistStat]->Fill(kStatV0ZN, i);
+
if (bgID && !v0BG)
fHistStatistics[iHistStat]->Fill(kStatBG, i);
AliInfo(Form("Initializing for beam type: %s", aEsd->GetESDRun()->GetBeamType()));
fIsPP = kTRUE;
- if (strcmp(aEsd->GetESDRun()->GetBeamType(), "Pb-Pb") == 0)
+ if (strcmp(aEsd->GetESDRun()->GetBeamType(), "A-A") == 0)
fIsPP = kFALSE;
return Initialize(aEsd->GetRunNumber());
AliTriggerAnalysis* triggerAnalysis = new AliTriggerAnalysis;
triggerAnalysis->SetAnalyzeMC(fMC);
- triggerAnalysis->EnableHistograms();
+ triggerAnalysis->EnableHistograms(fIsPP);
triggerAnalysis->SetSPDGFOThreshhold(1);
triggerAnalysis->SetDoFMD(kFALSE);
triggerAnalysis->SetCorrZDCCutParams(fTriggerOADB->GetZDCCutRefSumCorr(),
fTriggerOADB->GetZDCCutRefDeltaCorr(),
fTriggerOADB->GetZDCCutSigmaSumCorr(),
fTriggerOADB->GetZDCCutSigmaDeltaCorr());
+ triggerAnalysis->SetZNCorrCutParams(fTriggerOADB->GetZDCCutZNATimeCorrMin(),fTriggerOADB->GetZDCCutZNATimeCorrMax(),
+ fTriggerOADB->GetZDCCutZNCTimeCorrMin(),fTriggerOADB->GetZDCCutZNCTimeCorrMax());
fTriggerAnalysis.Add(triggerAnalysis);
}
#else
Int_t extrarows = fComputeBG != 0 ? 6 : 0;
#endif
- TH2F * h = new TH2F(Form("fHistStatistics%s",tag), Form("fHistStatistics - %s ;;",tag), kStatAcceptedPileUp, 0.5, kStatAcceptedPileUp+0.5, count+extrarows, -0.5, -0.5 + count+extrarows);
+ TH2F * h = new TH2F(Form("fHistStatistics%s",tag), Form("fHistStatistics - %s ;;",tag), kStatAccepted, 0.5, kStatAccepted+0.5, count+extrarows, -0.5, -0.5 + count+extrarows);
h->GetXaxis()->SetBinLabel(kStatTriggerClass, "Trigger class");
h->GetXaxis()->SetBinLabel(kStatHWTrig, "Hardware trigger");
h->GetXaxis()->SetBinLabel(kStatFO2L1, "FO (L1) >= 2");
h->GetXaxis()->SetBinLabel(kStatV0A, "V0A");
h->GetXaxis()->SetBinLabel(kStatV0C, "V0C");
+ h->GetXaxis()->SetBinLabel(kStatT0BB, "T0");
+ h->GetXaxis()->SetBinLabel(kStatT0BG, "T0BG");
+ h->GetXaxis()->SetBinLabel(kStatT0PileUp, "T0 PileUp");
h->GetXaxis()->SetBinLabel(kStatLaserCut, "TPC Laser Wup Cut");
+ h->GetXaxis()->SetBinLabel(kHVdipCut, "TPC HV dip Cut");
h->GetXaxis()->SetBinLabel(kStatV0ABG, "V0A BG");
h->GetXaxis()->SetBinLabel(kStatV0CBG, "V0C BG");
h->GetXaxis()->SetBinLabel(kStatZDCA, "ZDCA");
h->GetXaxis()->SetBinLabel(kStatZDCC, "ZDCC");
h->GetXaxis()->SetBinLabel(kStatZDCAC, "ZDCA & ZDCC");
h->GetXaxis()->SetBinLabel(kStatZDCTime, "ZDC Time Cut");
+ h->GetXaxis()->SetBinLabel(kStatZNABG, "ZNA BG");
+ h->GetXaxis()->SetBinLabel(kStatZNCBG, "ZNC BG");
h->GetXaxis()->SetBinLabel(kStatMB1, "(FO >= 1 | V0A | V0C) & !V0 BG");
h->GetXaxis()->SetBinLabel(kStatMB1Prime, "(FO >= 2 | (FO >= 1 & (V0A | V0C)) | (V0A &v0C) ) & !V0 BG");
//h->GetXaxis()->SetBinLabel(kStatFO1AndV0, "FO >= 1 & (V0A | V0C) & !V0 BG");
h->GetXaxis()->SetBinLabel(kStatV0, "V0A & V0C & !V0 BG & !BG ID");
+ h->GetXaxis()->SetBinLabel(kStatV0ZN, "V0A & V0C & !V0 BG & !BG ID & !ZN BG");
h->GetXaxis()->SetBinLabel(kStatOffline, "Offline Trigger");
//h->GetXaxis()->SetBinLabel(kStatAny2Hits, "2 Hits & !V0 BG");
h->GetXaxis()->SetBinLabel(kStatBG, "Background identification");
- h->GetXaxis()->SetBinLabel(kStatAccepted, "Accepted");
h->GetXaxis()->SetBinLabel(kStatAcceptedPileUp, "Pile up (in accepted)");
+ h->GetXaxis()->SetBinLabel(kStatAccepted, "Accepted");
Int_t n = 1;
singleTrigStrFull = singleTrigStr;
}
- TString blacklist = "CEMC7WU-B-NOPF-ALL, CEMC7WU-AC-NOPF-ALL CEMC7WU-E-NOPF-ALL"; // We know we dont support those, so we print no warning
+ TString blacklist = "CEMC7WU-B-NOPF-ALL, CEMC7WU-AC-NOPF-ALL CEMC7WU-E-NOPF-ALL C0LSR-ABCE-NOPF-TPC CBEAMB-B-NOPF-ALLNOTRD"; // We know we dont support those, so we print no warning
if(counts>0 && !found && !blacklist.Contains(singleTrig) && !singleTrigStr.Contains("WU") && !alreadyFoundTriggers.Contains(singleTrig)) {
Printf("WARNING: Found unknown trigger [%s] with %ld counts in the ESD!", singleTrig, counts);
alreadyFoundTriggers += singleTrig; // Avoid printing warning twice for the same trigger
for (Int_t iTrigClass = 0; iTrigClass < kNClasses; iTrigClass++){
delete [] rows[iTrigClass];
}
- }
+ } // end of ComputeBackground
fHistStatistics[0]->Write();
fHistStatistics[1]->Write();