#include "AliAnalysisTaskTrigChEff.h"
#include "TH1.h"
#include "TH2.h"
#include "TCanvas.h"
#include "TLegend.h"
#include "TMath.h"
#include "TObjString.h"
#include "TObjArray.h"
#include "TStyle.h"
#include "TROOT.h"
#include "TGraphAsymmErrors.h"
#include "TList.h"
#include "TFile.h"
#include "AliVParticle.h"
#include "AliAODTrack.h"
#include "AliESDMuonTrack.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataSlot.h"
#include "AliAnalysisDataContainer.h"
#include "AliVAnalysisMuon.h"
#include "AliMuonEventCuts.h"
#include "AliMuonTrackCuts.h"
#include "AliMergeableCollection.h"
#include "AliAnalysisMuonUtility.h"
ClassImp(AliAnalysisTaskTrigChEff)
AliAnalysisTaskTrigChEff::AliAnalysisTaskTrigChEff() :
AliVAnalysisMuon(),
fTrackSelKeys(0x0),
fCountTypeKeys(0x0),
fHistoTypeKeys(0x0),
fEffMethodKeys(0x0),
fMatchTrigKeys(0x0),
fList(0x0)
{
}
AliAnalysisTaskTrigChEff::AliAnalysisTaskTrigChEff(const char *name, const AliMuonTrackCuts& cuts) :
AliVAnalysisMuon(name, cuts),
fTrackSelKeys(0x0),
fCountTypeKeys(0x0),
fHistoTypeKeys(0x0),
fEffMethodKeys(0x0),
fMatchTrigKeys(0x0),
fList(0x0)
{
InitLocalKeys();
DefineOutput(2, TList::Class());
}
AliAnalysisTaskTrigChEff::~AliAnalysisTaskTrigChEff()
{
delete fTrackSelKeys;
delete fCountTypeKeys;
delete fHistoTypeKeys;
delete fEffMethodKeys;
delete fMatchTrigKeys;
if ( ! AliAnalysisManager::GetAnalysisManager() || ! AliAnalysisManager::GetAnalysisManager()->IsProofMode() ) {
delete fList;
}
}
TList* AliAnalysisTaskTrigChEff::GetEffHistoList(TString physSel, TString trigClassNames, TString centrality, TString trackSelection)
{
TList* outList = new TList();
outList->SetOwner();
FillEffHistoList(physSel, trigClassNames, centrality, trackSelection, outList);
return outList;
}
Bool_t AliAnalysisTaskTrigChEff::FillEffHistoList(TString physSel, TString trigClassNames, TString centrality, TString trackSelection, TList* outList)
{
if ( ! fMergeableCollection ) return kFALSE;
if ( ! outList ) outList = fList;
TString histoName = "";
TString histoPattern = "";
TH1* histo = 0x0;
Bool_t isOk = kTRUE;
for ( Int_t icount=0; icount<kNcounts; ++icount ) {
histoName = GetHistoName(kHchamberEff, icount, -1, -1, -1, -1);
histoPattern = Form("%s%s", histoName.Data(), trackSelection.Data());
histo = (TH1*)GetSum(physSel, trigClassNames, centrality, histoPattern);
if ( histo ) {
histo->SetName(histoName.Data());
histo->SetTitle(histoName.Data());
histo->SetDirectory(0);
outList->Add(histo);
}
else isOk = kFALSE;
}
for ( Int_t icount=0; icount<kNcounts; ++icount ) {
for ( Int_t ich=0; ich<4; ++ich ) {
histoName = GetHistoName(kHslatEff, icount, ich, -1, -1, -1);
histoPattern = Form("%s%s", histoName.Data(), trackSelection.Data());
histo = (TH1*)GetSum(physSel, trigClassNames, centrality, histoPattern);
if ( histo ) {
histo->SetName(histoName.Data());
histo->SetTitle(histoName.Data());
histo->SetDirectory(0);
outList->Add(histo);
}
else isOk = kFALSE;
}
}
for ( Int_t icount=0; icount<kNcounts; ++icount ) {
for ( Int_t ich=0; ich<4; ++ich ) {
histoName = GetHistoName(kHboardEff, icount, ich, -1, -1, -1);
histoPattern = Form("%s%s", histoName.Data(), trackSelection.Data());
histo = (TH1*)GetSum(physSel, trigClassNames, centrality, histoPattern);
if ( histo ) {
histo->SetName(histoName.Data());
histo->SetTitle(histoName.Data());
histo->SetDirectory(0);
outList->Add(histo);
}
else isOk = kFALSE;
}
}
histoName = GetHistoName(kHcheckBoard, -1, -1, -1, -1, -1);
histoPattern = Form("%s%s", histoName.Data(), trackSelection.Data());
histo = (TH1*)GetSum(physSel, trigClassNames, centrality, histoPattern);
if ( histo ) {
histo->SetName(histoName.Data());
histo->SetTitle(histoName.Data());
histo->SetDirectory(0);
outList->Add(histo);
}
else isOk = kFALSE;
return isOk;
}
void AliAnalysisTaskTrigChEff::FinishTaskOutput()
{
TString histoName = "";
for ( Int_t isel=0; isel<kNselections; ++isel ) {
for ( Int_t itrig=0; itrig<GetAllSelectedTrigClasses()->GetEntries(); ++itrig ) {
for ( Int_t icent=1; icent<=GetCentralityClasses()->GetNbins(); ++icent ) {
for ( Int_t itrackSel=0; itrackSel<kNtrackSel; ++itrackSel ) {
for ( Int_t imethod=0; imethod<kNeffMethods; ++imethod ) {
for ( Int_t itype=0; itype<kNhistoTypes; ++itype ) {
for ( Int_t icount=-1; icount<kNcounts; ++icount ) {
for ( Int_t ich=-1; ich<4; ++ich ) {
for ( Int_t imatch=kMatchApt; imatch<kMatchHpt; ++imatch ) {
TH1* histo = 0x0;
for ( Int_t jmatch=imatch+1; jmatch<=kMatchHpt; ++jmatch ) {
histoName = GetHistoName(itype, icount, ich, itrackSel, jmatch, imethod);
TH1* histoAdd = (TH1*)fMergeableCollection->GetObject(Form("/%s/%s/%s/",fPhysSelKeys->At(isel)->GetName(), GetAllSelectedTrigClasses()->At(itrig)->GetName(), GetCentralityClasses()->GetBinLabel(icent)), histoName);
if ( ! histoAdd ) continue;
histoName = GetHistoName(itype, icount, ich, itrackSel, imatch, imethod);
if ( ! histo ) histo = (TH1*)GetMergeableObject(fPhysSelKeys->At(isel)->GetName(), GetAllSelectedTrigClasses()->At(itrig)->GetName(), GetCentralityClasses()->GetBinLabel(icent), histoName);
AliDebug(2,Form("Adding %s (%g) to %s (%g)", histoAdd->GetName(), histoAdd->Integral(), histo->GetName(), histo->Integral()));
histo->Add(histoAdd);
}
}
}
}
}
}
}
}
}
}
TString physSel = fPhysSelKeys->At(kPhysSelPass)->GetName();
TString trigClass = "ANY";
TString centrality = "all";
TString histoPattern = GetHistoName(-1,-1,-1,kSelectTrack,kMatchApt,kEffFromTrack);
FillEffHistoList(physSel, trigClass, centrality, histoPattern, fList);
AliVAnalysisMuon::FinishTaskOutput();
}
void AliAnalysisTaskTrigChEff::InitLocalKeys()
{
TString matchTrigNames = "Nopt Apt Lpt Hpt";
fMatchTrigKeys = matchTrigNames.Tokenize(" ");
TString countTypeNames = "bendPlaneCount nonBendPlaneCount bothPlanesCount allTracksCount";
fCountTypeKeys = countTypeNames.Tokenize(" ");
TString histoTypeKeys = "Chamber Slat Board checkRejectedBoard";
fHistoTypeKeys = histoTypeKeys.Tokenize(" ");
TString effMethodKeys = "FromTrk FromTrg";
fEffMethodKeys = effMethodKeys.Tokenize(" ");
TString trackSelNames = "Match NoSelMatch";
fTrackSelKeys = trackSelNames.Tokenize(" ");
}
void AliAnalysisTaskTrigChEff::MyUserCreateOutputObjects()
{
const Char_t* yAxisTitle = "counts";
Int_t nChamberBins = 4;
Float_t chamberLow = 11.-0.5, chamberHigh = (Float_t)(nChamberBins)+11.-0.5;
const Char_t* chamberName = "chamber";
Int_t nSlatBins = 18;
Float_t slatLow = 0.-0.5, slatHigh = (Float_t)nSlatBins-0.5;
const Char_t* slatName = "slat";
Int_t nBoardBins = 234;
Float_t boardLow = 1.-0.5, boardHigh = (Float_t)nBoardBins+1.-0.5;
const Char_t* boardName = "board";
TString baseName, histoName, histoTitle;
TH1* histo;
TH2F* histo2D;
for ( Int_t itrackSel = 0; itrackSel<kNtrackSel; ++itrackSel ) {
for ( Int_t imethod=0; imethod<kNeffMethods; ++imethod ) {
for ( Int_t imatch = 0; imatch<kNtrigMatch; ++imatch ) {
for ( Int_t icount=0; icount<kNcounts; ++icount ) {
histoName = GetHistoName(kHchamberEff, icount, -1, itrackSel, imatch, imethod);
histo = new TH1F(histoName, histoName,
nChamberBins, chamberLow, chamberHigh);
histo->GetXaxis()->SetTitle(chamberName);
histo->GetYaxis()->SetTitle(yAxisTitle);
AddObjectToCollection(histo);
}
for ( Int_t icount=0; icount<kNcounts; ++icount ) {
for ( Int_t ich=0; ich<4; ++ich ) {
histoName = GetHistoName(kHslatEff, icount, ich, itrackSel, imatch, imethod);
histo = new TH1F(histoName, histoName,
nSlatBins, slatLow, slatHigh);
histo->GetXaxis()->SetTitle(slatName);
histo->GetYaxis()->SetTitle(yAxisTitle);
AddObjectToCollection(histo);
}
}
for ( Int_t icount=0; icount<kNcounts; ++icount ) {
for ( Int_t ich=0; ich<4; ++ich ) {
histoName = GetHistoName(kHboardEff, icount, ich, itrackSel, imatch, imethod);
histo = new TH1F(histoName, histoName,
nBoardBins, boardLow, boardHigh);
histo->GetXaxis()->SetTitle(boardName);
histo->GetYaxis()->SetTitle(yAxisTitle);
AddObjectToCollection(histo);
}
}
histoName = GetHistoName(kHcheckBoard, -1, -1, itrackSel, imatch, imethod);
histo2D = new TH2F(histoName.Data(), "Rejected tracks motivation",
5, 20.5, 25.5, nBoardBins, boardLow, boardHigh);
histo2D->GetXaxis()->SetBinLabel(1,"Many pads");
histo2D->GetXaxis()->SetBinLabel(2,"Few pads");
histo2D->GetXaxis()->SetBinLabel(3,"Outside geom");
histo2D->GetXaxis()->SetBinLabel(4,"Tracker track");
histo2D->GetXaxis()->SetBinLabel(5,"Masked board");
histo2D->GetYaxis()->SetTitle(boardName);
AddObjectToCollection(histo2D);
}
}
}
fMuonTrackCuts->Print();
fList = new TList();
fList->SetOwner();
PostData(2, fList);
}
TString AliAnalysisTaskTrigChEff::GetHistoName(Int_t itype, Int_t icount, Int_t ichamber, Int_t itrackSel, Int_t imatch, Int_t imethod)
{
TString histoName = "";
if ( itype < kHcheckBoard && icount >= 0 ) histoName += static_cast<TObjString*>(fCountTypeKeys->At(icount))->GetString();
if ( itype >= 0 ) histoName += ((TObjString*)fHistoTypeKeys->At(itype))->GetString();
if ( ichamber >= 0 ) histoName += Form("Ch%i", 11+ichamber);
if ( itrackSel >= 0 ) histoName += static_cast<TObjString*>(fTrackSelKeys->At(itrackSel))->GetString();
if ( imatch >= 0 ) histoName += static_cast<TObjString*>(fMatchTrigKeys->At(imatch))->GetString();
if ( imethod >= 0 ) histoName += static_cast<TObjString*>(fEffMethodKeys->At(imethod))->GetString();
return histoName;
}
void AliAnalysisTaskTrigChEff::ProcessEvent(TString physSel, const TObjArray& selectTrigClasses, TString centrality)
{
Int_t slat = 0, board = 0;
UInt_t pattern = 0;
TString histoName = "";
TArrayI othersEfficient(4);
AliVParticle* track = 0x0;
UInt_t addMask[4] = {0, AliMuonTrackCuts::kMuMatchApt, AliMuonTrackCuts::kMuMatchApt|AliMuonTrackCuts::kMuMatchLpt, AliMuonTrackCuts::kMuMatchApt|AliMuonTrackCuts::kMuMatchLpt|AliMuonTrackCuts::kMuMatchHpt};
Int_t nTracks = AliAnalysisMuonUtility::GetNTracks(InputEvent());
for ( Int_t itrack = 0; itrack < nTracks; ++itrack ) {
track = AliAnalysisMuonUtility::GetTrack(itrack,InputEvent());
Bool_t matchTracker = AliAnalysisMuonUtility::IsMuonTrack(track);
Int_t matchTrig = AliAnalysisMuonUtility::GetMatchTrigger(track);
UInt_t selection = fMuonTrackCuts->GetSelectionMask(track);
UInt_t filterMask = fMuonTrackCuts->GetFilterMask() | addMask[matchTrig];
Bool_t isSelected = ( ( selection & filterMask ) == filterMask );
for ( Int_t imethod=0; imethod<kNeffMethods; ++imethod ) {
if ( imethod == kEffFromTrack ) {
if ( ! matchTracker || track->P() < 10. ) continue;
pattern = AliAnalysisMuonUtility::GetMUONTrigHitsMapTrk(track);
board = AliESDMuonTrack::GetCrossedBoard(pattern);
}
else {
if ( matchTrig == 0 ) continue;
pattern = AliAnalysisMuonUtility::GetMUONTrigHitsMapTrg(track);
board = ( AliAnalysisMuonUtility::IsAODEvent(InputEvent()) ) ? AliESDMuonTrack::GetCrossedBoard(pattern) : ((AliESDMuonTrack*)track)->LoCircuit();
}
Int_t effFlag = AliESDMuonTrack::GetEffFlag(pattern);
if ( effFlag < AliESDMuonTrack::kChEff ) {
for ( Int_t itrackSel=0; itrackSel<kNtrackSel; ++itrackSel ) {
if ( itrackSel == kSelectTrack && ! isSelected ) continue;
for ( Int_t itrig=0; itrig<selectTrigClasses.GetEntries(); ++itrig ) {
TString trigClassName = ((TObjString*)selectTrigClasses.At(itrig))->GetString();
histoName = GetHistoName(kHcheckBoard, -1, -1, itrackSel, matchTrig, imethod);
((TH2F*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(AliESDMuonTrack::GetSlatOrInfo(pattern), board);
}
}
continue;
}
othersEfficient.Reset(1);
for ( Int_t cath=0; cath<2; ++cath ) {
for ( Int_t ich=0; ich<4; ++ich ) {
if ( ! AliESDMuonTrack::IsChamberHit(pattern, cath, ich) ) {
for ( Int_t jch=0; jch<4; jch++ ) {
if ( jch != ich ) othersEfficient[jch] = 0;
}
break;
}
}
}
Bool_t rejectTrack = kTRUE;
for ( Int_t ich=0; ich<4; ++ich ) {
if ( othersEfficient[ich] > 0 ) {
rejectTrack = kFALSE;
break;
}
}
if ( rejectTrack ) continue;
slat = AliESDMuonTrack::GetSlatOrInfo(pattern);
for ( Int_t ich=0; ich<4; ++ich ) {
if ( ! othersEfficient[ich] )
continue;
Int_t iChamber = 11 + ich;
Bool_t hitsBend = AliESDMuonTrack::IsChamberHit(pattern, 0, ich);
Bool_t hitsNonBend = AliESDMuonTrack::IsChamberHit(pattern, 1, ich);
Bool_t fillHisto[kNcounts] = {
hitsBend,
hitsNonBend,
( hitsBend && hitsNonBend ),
kTRUE
};
for ( Int_t itrackSel=0; itrackSel<kNtrackSel; ++itrackSel ) {
if ( itrackSel == kSelectTrack && ! isSelected ) continue;
for (Int_t icount=0; icount<kNcounts; ++icount){
if ( ! fillHisto[icount] ) continue;
for ( Int_t itrig=0; itrig<selectTrigClasses.GetEntries(); ++itrig ) {
TString trigClassName = ((TObjString*)selectTrigClasses.At(itrig))->GetString();
histoName = GetHistoName(kHchamberEff, icount, -1, itrackSel, matchTrig, imethod);
((TH1*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(iChamber);
if ( effFlag < AliESDMuonTrack::kSlatEff ) continue;
histoName = GetHistoName(kHslatEff, icount, ich, itrackSel, matchTrig, imethod);
((TH1*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(slat);
if ( effFlag < AliESDMuonTrack::kBoardEff ) continue;
histoName = GetHistoName(kHboardEff, icount, ich, itrackSel, matchTrig, imethod);
((TH1*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(board);
}
}
}
}
}
}
PostData(2, fList);
}
void AliAnalysisTaskTrigChEff::Terminate(Option_t *)
{
AliVAnalysisMuon::Terminate("");
if ( ! fMergeableCollection ) return;
Int_t xshift = 100;
Int_t yshift = 20;
Int_t igroup1 = -1;
Int_t igroup2 = 0;
TObjArray* physSel = ((TObjString*)fTerminateOptions->At(0))->GetString().Tokenize(" ");
physSel->SetOwner();
TObjArray* trigClasses = ((TObjString*)fTerminateOptions->At(1))->GetString().Tokenize(" ");
trigClasses->SetOwner();
TObjArray* centrality = ((TObjString*)fTerminateOptions->At(2))->GetString().Tokenize(" ");
centrality->SetOwner();
TString furtherOpt = ((TObjString*)fTerminateOptions->At(3))->GetString();
TString currName = "";
TObjArray* optArr = furtherOpt.Tokenize(" ");
TObjArray trackSel, methodSel;
trackSel.SetOwner();
methodSel.SetOwner();
TString outFileOpt = "";
for ( Int_t iopt=0; iopt<optArr->GetEntries(); iopt++ ) {
currName = optArr->At(iopt)->GetName();
if ( currName.Contains(".root") ) outFileOpt = currName;
else if ( currName.Contains("Match") ) trackSel.Add(new TObjString(currName));
else if ( currName.Contains("From") ) methodSel.Add(new TObjString(currName));
}
delete optArr;
if ( trackSel.GetEntries() == 0 ) trackSel.Add(new TObjString(GetHistoName(-1,-1,-1,kSelectTrack,kMatchApt,-1)));
if ( methodSel.GetEntries() == 0 ) methodSel.Add(new TObjString(fEffMethodKeys->At(kEffFromTrack)->GetName()));
furtherOpt.ToUpper();
Int_t chosenType = ( furtherOpt.Contains("BOARD") ) ? kHboardEff : kHslatEff;
igroup1++;
igroup2 = 0;
TString histoName = "", yAxisTitle = "";
TH1 *num = 0x0;
TH1 *den = 0x0;
TGraphAsymmErrors* effGraph = 0x0;
for ( Int_t icount=0; icount<kNcounts-1; ++icount ) {
currName = Form("%s%s_can", fHistoTypeKeys->At(chosenType)->GetName(), fCountTypeKeys->At(icount)->GetName());
TCanvas* can = new TCanvas(currName.Data(), currName.Data(), igroup1*xshift,igroup2*yshift,600,600);
can->Divide(2,2);
TLegend* leg = new TLegend(0.6, 0.6, 0.9, 0.9);
leg->SetBorderSize(1);
for ( Int_t ich=0; ich<4; ++ich ) {
TGraph* refGraph = 0x0;
can->cd(ich+1);
gPad->SetRightMargin(0.03);
Int_t icolor = 1;
Int_t istyle = 0;
TString drawOpt = "AP";
for ( Int_t isel=0; isel<physSel->GetEntries(); ++isel ) {
for ( Int_t itrig=0; itrig<trigClasses->GetEntries(); ++itrig ) {
for ( Int_t icent=0; icent<centrality->GetEntries(); ++icent ) {
for ( Int_t imethodSel=0; imethodSel<methodSel.GetEntries(); ++imethodSel ) {
for ( Int_t itrackSel=0; itrackSel<trackSel.GetEntries(); ++itrackSel ) {
histoName = GetHistoName(chosenType, kAllTracks, ich, -1, -1, -1);
histoName += Form("%s%s",trackSel.At(itrackSel)->GetName(),methodSel.At(imethodSel)->GetName());
den = (TH1*)GetSum(physSel->At(isel)->GetName(), trigClasses->At(itrig)->GetName(), centrality->At(icent)->GetName(), histoName.Data());
if ( ! den ) {
printf("Warning: cannot find %s\n", histoName.Data());
continue;
}
histoName = GetHistoName(chosenType, icount, ich, -1, -1, -1);
histoName += Form("%s%s",trackSel.At(itrackSel)->GetName(),methodSel.At(imethodSel)->GetName());
num = (TH1*)GetSum(physSel->At(isel)->GetName(), trigClasses->At(itrig)->GetName(), centrality->At(icent)->GetName(), histoName.Data());
if ( ! num ) continue;
effGraph = new TGraphAsymmErrors(num, den, "e0");
currName = Form("%s_%s_%s_%s_%s", physSel->At(isel)->GetName(), trigClasses->At(itrig)->GetName(), centrality->At(icent)->GetName(), trackSel.At(itrackSel)->GetName(), methodSel.At(imethodSel)->GetName());
effGraph->SetTitle(currName.Data());
Double_t ymin = 0.;
Double_t ymax = 1.1;
yAxisTitle = "Efficiency";
if ( furtherOpt.Contains("DIFF") || furtherOpt.Contains("PULL") ) {
if ( ! refGraph ) {
refGraph = effGraph;
continue;
}
Double_t currX, currY, baseX, baseY, errYlow = 0., errYhigh = 0., newY = 0.;
Double_t refVal = 1., errY = 0.;
for ( Int_t ipoint=0; ipoint<effGraph->GetN(); ipoint++ ) {
refGraph->GetPoint(ipoint, baseX, baseY);
effGraph->GetPoint(ipoint, currX, currY);
Double_t errX = effGraph->GetErrorXlow(ipoint);
if ( furtherOpt.Contains("DIFF") ) {
refVal = ( baseY > 0. ) ? baseY : 1.;
newY = ( currY - baseY ) / refVal;
Double_t errYlow1 = effGraph->GetErrorYlow(ipoint);
Double_t errYlow2 = refGraph->GetErrorYlow(ipoint);
Double_t errYhigh1 = effGraph->GetErrorYhigh(ipoint);
Double_t errYhigh2 = refGraph->GetErrorYhigh(ipoint);
errYlow = TMath::Sqrt(errYlow1*errYlow1 + errYlow2*errYlow2) / refVal;
errYhigh = TMath::Sqrt(errYhigh1*errYhigh1 + errYhigh2*errYhigh2) / refVal;
yAxisTitle = "(eff - ref ) / ref";
effGraph->SetTitle(Form("Rel. diff. w.r.t. %s", refGraph->GetTitle()));
ymin = -0.1;
ymax = 0.1;
}
else if ( furtherOpt.Contains("PULL") ) {
errY = 0.5 * ( effGraph->GetErrorYlow(ipoint) + effGraph->GetErrorYhigh(ipoint));
newY = ( errY > 0. ) ? ( currY - baseY ) / errY : 0.;
errYlow = 1.;
errYhigh = 1.;
yAxisTitle = "(eff - ref ) / err";
effGraph->SetTitle(Form("Pull w.r.t. %s", refGraph->GetTitle()));
ymin = -4.;
ymax = 4.;
}
effGraph->SetPoint(ipoint, currX, newY);
effGraph->SetPointError(ipoint, errX, errX, errYlow, errYhigh);
}
}
effGraph->GetYaxis()->SetRangeUser(ymin, ymax);
effGraph->GetYaxis()->SetTitle(yAxisTitle.Data());
effGraph->SetLineColor(icolor);
effGraph->SetMarkerColor(icolor);
effGraph->SetMarkerStyle(20 + istyle);
icolor++;
if ( icolor == 5 || icolor == 10 ) icolor++;
istyle++;
effGraph->Draw(drawOpt.Data());
drawOpt = "P";
if ( ich < 3 ) continue;
leg->AddEntry(effGraph, currName.Data(), "lp");
}
}
}
}
}
}
leg->Draw("same");
}
delete physSel;
delete trigClasses;
delete centrality;
fList = dynamic_cast<TList*>(GetOutputData(2));
if ( fList ) {
TString baseName[3] = {"Chamber", "RPC", "Board"};
Int_t baseIndex[3] = {kHchamberEff, kHslatEff, kHboardEff};
TString effName[kNcounts-1] = {"BendPlane", "NonBendPlane", "BothPlanes"};
for ( Int_t itype=0; itype<3; itype++ ) {
for ( Int_t icount=0; icount<kNcounts-1; icount++ ){
TString canName = Form("efficiencyPer%s_%s",baseName[itype].Data(),effName[icount].Data());
TCanvas* can = new TCanvas(canName.Data(),canName.Data(),10*(1+kNcounts*itype+icount),10*(1+kNcounts*itype+icount),310,310);
can->SetFillColor(10); can->SetHighLightColor(10);
can->SetLeftMargin(0.15); can->SetBottomMargin(0.15);
if ( itype > 0 )
can->Divide(2,2);
for ( Int_t ich=-1; ich<4; ich++ ) {
histoName = GetHistoName(baseIndex[itype], icount, ich, -1, -1, -1);
num = (TH1*)fList->FindObject(histoName.Data());
histoName = GetHistoName(baseIndex[itype], kNcounts-1, ich, -1, -1, -1);
den = (TH1*)fList->FindObject(histoName.Data());
if ( ! num || ! den ) continue;
effGraph = new TGraphAsymmErrors(num, den, "e0");
effGraph->GetYaxis()->SetRangeUser(0., 1.1);
effGraph->GetYaxis()->SetTitle("Efficiency");
effGraph->GetXaxis()->SetTitle(baseName[itype].Data());
can->cd(ich+1);
effGraph->Draw("AP");
if ( itype == 0 ) break;
}
}
}
}
if ( ! outFileOpt.IsNull() ) {
TObjArray* outFileOptList = outFileOpt.Tokenize("?");
AliInfo(Form("Creating file %s", outFileOptList->At(0)->GetName()));
TList* effList = GetEffHistoList(outFileOptList->At(1)->GetName(), outFileOptList->At(2)->GetName(), outFileOptList->At(3)->GetName(), outFileOptList->At(4)->GetName());
effList->SetName(GetOutputSlot(2)->GetContainer()->GetName());
if ( effList ->GetEntries() == 0 ) {
printf("\nWarning: no histograms satisfying the requested conditions.\n(%s %s %s %s).\nOutput %s not created.\n", outFileOptList->At(1)->GetName(), outFileOptList->At(2)->GetName(), outFileOptList->At(3)->GetName(), outFileOptList->At(4)->GetName(),outFileOptList->At(0)->GetName());
}
else {
TFile* outFile = TFile::Open(outFileOptList->At(0)->GetName(), "RECREATE");
effList->Write(effList->GetName(),TObject::kSingleKey);
outFile->Close();
}
delete effList;
delete outFileOptList;
}
}
AliAnalysisTaskTrigChEff.cxx:1 AliAnalysisTaskTrigChEff.cxx:2 AliAnalysisTaskTrigChEff.cxx:3 AliAnalysisTaskTrigChEff.cxx:4 AliAnalysisTaskTrigChEff.cxx:5 AliAnalysisTaskTrigChEff.cxx:6 AliAnalysisTaskTrigChEff.cxx:7 AliAnalysisTaskTrigChEff.cxx:8 AliAnalysisTaskTrigChEff.cxx:9 AliAnalysisTaskTrigChEff.cxx:10 AliAnalysisTaskTrigChEff.cxx:11 AliAnalysisTaskTrigChEff.cxx:12 AliAnalysisTaskTrigChEff.cxx:13 AliAnalysisTaskTrigChEff.cxx:14 AliAnalysisTaskTrigChEff.cxx:15 AliAnalysisTaskTrigChEff.cxx:16 AliAnalysisTaskTrigChEff.cxx:17 AliAnalysisTaskTrigChEff.cxx:18 AliAnalysisTaskTrigChEff.cxx:19 AliAnalysisTaskTrigChEff.cxx:20 AliAnalysisTaskTrigChEff.cxx:21 AliAnalysisTaskTrigChEff.cxx:22 AliAnalysisTaskTrigChEff.cxx:23 AliAnalysisTaskTrigChEff.cxx:24 AliAnalysisTaskTrigChEff.cxx:25 AliAnalysisTaskTrigChEff.cxx:26 AliAnalysisTaskTrigChEff.cxx:27 AliAnalysisTaskTrigChEff.cxx:28 AliAnalysisTaskTrigChEff.cxx:29 AliAnalysisTaskTrigChEff.cxx:30 AliAnalysisTaskTrigChEff.cxx:31 AliAnalysisTaskTrigChEff.cxx:32 AliAnalysisTaskTrigChEff.cxx:33 AliAnalysisTaskTrigChEff.cxx:34 AliAnalysisTaskTrigChEff.cxx:35 AliAnalysisTaskTrigChEff.cxx:36 AliAnalysisTaskTrigChEff.cxx:37 AliAnalysisTaskTrigChEff.cxx:38 AliAnalysisTaskTrigChEff.cxx:39 AliAnalysisTaskTrigChEff.cxx:40 AliAnalysisTaskTrigChEff.cxx:41 AliAnalysisTaskTrigChEff.cxx:42 AliAnalysisTaskTrigChEff.cxx:43 AliAnalysisTaskTrigChEff.cxx:44 AliAnalysisTaskTrigChEff.cxx:45 AliAnalysisTaskTrigChEff.cxx:46 AliAnalysisTaskTrigChEff.cxx:47 AliAnalysisTaskTrigChEff.cxx:48 AliAnalysisTaskTrigChEff.cxx:49 AliAnalysisTaskTrigChEff.cxx:50 AliAnalysisTaskTrigChEff.cxx:51 AliAnalysisTaskTrigChEff.cxx:52 AliAnalysisTaskTrigChEff.cxx:53 AliAnalysisTaskTrigChEff.cxx:54 AliAnalysisTaskTrigChEff.cxx:55 AliAnalysisTaskTrigChEff.cxx:56 AliAnalysisTaskTrigChEff.cxx:57 AliAnalysisTaskTrigChEff.cxx:58 AliAnalysisTaskTrigChEff.cxx:59 AliAnalysisTaskTrigChEff.cxx:60 AliAnalysisTaskTrigChEff.cxx:61 AliAnalysisTaskTrigChEff.cxx:62 AliAnalysisTaskTrigChEff.cxx:63 AliAnalysisTaskTrigChEff.cxx:64 AliAnalysisTaskTrigChEff.cxx:65 AliAnalysisTaskTrigChEff.cxx:66 AliAnalysisTaskTrigChEff.cxx:67 AliAnalysisTaskTrigChEff.cxx:68 AliAnalysisTaskTrigChEff.cxx:69 AliAnalysisTaskTrigChEff.cxx:70 AliAnalysisTaskTrigChEff.cxx:71 AliAnalysisTaskTrigChEff.cxx:72 AliAnalysisTaskTrigChEff.cxx:73 AliAnalysisTaskTrigChEff.cxx:74 AliAnalysisTaskTrigChEff.cxx:75 AliAnalysisTaskTrigChEff.cxx:76 AliAnalysisTaskTrigChEff.cxx:77 AliAnalysisTaskTrigChEff.cxx:78 AliAnalysisTaskTrigChEff.cxx:79 AliAnalysisTaskTrigChEff.cxx:80 AliAnalysisTaskTrigChEff.cxx:81 AliAnalysisTaskTrigChEff.cxx:82 AliAnalysisTaskTrigChEff.cxx:83 AliAnalysisTaskTrigChEff.cxx:84 AliAnalysisTaskTrigChEff.cxx:85 AliAnalysisTaskTrigChEff.cxx:86 AliAnalysisTaskTrigChEff.cxx:87 AliAnalysisTaskTrigChEff.cxx:88 AliAnalysisTaskTrigChEff.cxx:89 AliAnalysisTaskTrigChEff.cxx:90 AliAnalysisTaskTrigChEff.cxx:91 AliAnalysisTaskTrigChEff.cxx:92 AliAnalysisTaskTrigChEff.cxx:93 AliAnalysisTaskTrigChEff.cxx:94 AliAnalysisTaskTrigChEff.cxx:95 AliAnalysisTaskTrigChEff.cxx:96 AliAnalysisTaskTrigChEff.cxx:97 AliAnalysisTaskTrigChEff.cxx:98 AliAnalysisTaskTrigChEff.cxx:99 AliAnalysisTaskTrigChEff.cxx:100 AliAnalysisTaskTrigChEff.cxx:101 AliAnalysisTaskTrigChEff.cxx:102 AliAnalysisTaskTrigChEff.cxx:103 AliAnalysisTaskTrigChEff.cxx:104 AliAnalysisTaskTrigChEff.cxx:105 AliAnalysisTaskTrigChEff.cxx:106 AliAnalysisTaskTrigChEff.cxx:107 AliAnalysisTaskTrigChEff.cxx:108 AliAnalysisTaskTrigChEff.cxx:109 AliAnalysisTaskTrigChEff.cxx:110 AliAnalysisTaskTrigChEff.cxx:111 AliAnalysisTaskTrigChEff.cxx:112 AliAnalysisTaskTrigChEff.cxx:113 AliAnalysisTaskTrigChEff.cxx:114 AliAnalysisTaskTrigChEff.cxx:115 AliAnalysisTaskTrigChEff.cxx:116 AliAnalysisTaskTrigChEff.cxx:117 AliAnalysisTaskTrigChEff.cxx:118 AliAnalysisTaskTrigChEff.cxx:119 AliAnalysisTaskTrigChEff.cxx:120 AliAnalysisTaskTrigChEff.cxx:121 AliAnalysisTaskTrigChEff.cxx:122 AliAnalysisTaskTrigChEff.cxx:123 AliAnalysisTaskTrigChEff.cxx:124 AliAnalysisTaskTrigChEff.cxx:125 AliAnalysisTaskTrigChEff.cxx:126 AliAnalysisTaskTrigChEff.cxx:127 AliAnalysisTaskTrigChEff.cxx:128 AliAnalysisTaskTrigChEff.cxx:129 AliAnalysisTaskTrigChEff.cxx:130 AliAnalysisTaskTrigChEff.cxx:131 AliAnalysisTaskTrigChEff.cxx:132 AliAnalysisTaskTrigChEff.cxx:133 AliAnalysisTaskTrigChEff.cxx:134 AliAnalysisTaskTrigChEff.cxx:135 AliAnalysisTaskTrigChEff.cxx:136 AliAnalysisTaskTrigChEff.cxx:137 AliAnalysisTaskTrigChEff.cxx:138 AliAnalysisTaskTrigChEff.cxx:139 AliAnalysisTaskTrigChEff.cxx:140 AliAnalysisTaskTrigChEff.cxx:141 AliAnalysisTaskTrigChEff.cxx:142 AliAnalysisTaskTrigChEff.cxx:143 AliAnalysisTaskTrigChEff.cxx:144 AliAnalysisTaskTrigChEff.cxx:145 AliAnalysisTaskTrigChEff.cxx:146 AliAnalysisTaskTrigChEff.cxx:147 AliAnalysisTaskTrigChEff.cxx:148 AliAnalysisTaskTrigChEff.cxx:149 AliAnalysisTaskTrigChEff.cxx:150 AliAnalysisTaskTrigChEff.cxx:151 AliAnalysisTaskTrigChEff.cxx:152 AliAnalysisTaskTrigChEff.cxx:153 AliAnalysisTaskTrigChEff.cxx:154 AliAnalysisTaskTrigChEff.cxx:155 AliAnalysisTaskTrigChEff.cxx:156 AliAnalysisTaskTrigChEff.cxx:157 AliAnalysisTaskTrigChEff.cxx:158 AliAnalysisTaskTrigChEff.cxx:159 AliAnalysisTaskTrigChEff.cxx:160 AliAnalysisTaskTrigChEff.cxx:161 AliAnalysisTaskTrigChEff.cxx:162 AliAnalysisTaskTrigChEff.cxx:163 AliAnalysisTaskTrigChEff.cxx:164 AliAnalysisTaskTrigChEff.cxx:165 AliAnalysisTaskTrigChEff.cxx:166 AliAnalysisTaskTrigChEff.cxx:167 AliAnalysisTaskTrigChEff.cxx:168 AliAnalysisTaskTrigChEff.cxx:169 AliAnalysisTaskTrigChEff.cxx:170 AliAnalysisTaskTrigChEff.cxx:171 AliAnalysisTaskTrigChEff.cxx:172 AliAnalysisTaskTrigChEff.cxx:173 AliAnalysisTaskTrigChEff.cxx:174 AliAnalysisTaskTrigChEff.cxx:175 AliAnalysisTaskTrigChEff.cxx:176 AliAnalysisTaskTrigChEff.cxx:177 AliAnalysisTaskTrigChEff.cxx:178 AliAnalysisTaskTrigChEff.cxx:179 AliAnalysisTaskTrigChEff.cxx:180 AliAnalysisTaskTrigChEff.cxx:181 AliAnalysisTaskTrigChEff.cxx:182 AliAnalysisTaskTrigChEff.cxx:183 AliAnalysisTaskTrigChEff.cxx:184 AliAnalysisTaskTrigChEff.cxx:185 AliAnalysisTaskTrigChEff.cxx:186 AliAnalysisTaskTrigChEff.cxx:187 AliAnalysisTaskTrigChEff.cxx:188 AliAnalysisTaskTrigChEff.cxx:189 AliAnalysisTaskTrigChEff.cxx:190 AliAnalysisTaskTrigChEff.cxx:191 AliAnalysisTaskTrigChEff.cxx:192 AliAnalysisTaskTrigChEff.cxx:193 AliAnalysisTaskTrigChEff.cxx:194 AliAnalysisTaskTrigChEff.cxx:195 AliAnalysisTaskTrigChEff.cxx:196 AliAnalysisTaskTrigChEff.cxx:197 AliAnalysisTaskTrigChEff.cxx:198 AliAnalysisTaskTrigChEff.cxx:199 AliAnalysisTaskTrigChEff.cxx:200 AliAnalysisTaskTrigChEff.cxx:201 AliAnalysisTaskTrigChEff.cxx:202 AliAnalysisTaskTrigChEff.cxx:203 AliAnalysisTaskTrigChEff.cxx:204 AliAnalysisTaskTrigChEff.cxx:205 AliAnalysisTaskTrigChEff.cxx:206 AliAnalysisTaskTrigChEff.cxx:207 AliAnalysisTaskTrigChEff.cxx:208 AliAnalysisTaskTrigChEff.cxx:209 AliAnalysisTaskTrigChEff.cxx:210 AliAnalysisTaskTrigChEff.cxx:211 AliAnalysisTaskTrigChEff.cxx:212 AliAnalysisTaskTrigChEff.cxx:213 AliAnalysisTaskTrigChEff.cxx:214 AliAnalysisTaskTrigChEff.cxx:215 AliAnalysisTaskTrigChEff.cxx:216 AliAnalysisTaskTrigChEff.cxx:217 AliAnalysisTaskTrigChEff.cxx:218 AliAnalysisTaskTrigChEff.cxx:219 AliAnalysisTaskTrigChEff.cxx:220 AliAnalysisTaskTrigChEff.cxx:221 AliAnalysisTaskTrigChEff.cxx:222 AliAnalysisTaskTrigChEff.cxx:223 AliAnalysisTaskTrigChEff.cxx:224 AliAnalysisTaskTrigChEff.cxx:225 AliAnalysisTaskTrigChEff.cxx:226 AliAnalysisTaskTrigChEff.cxx:227 AliAnalysisTaskTrigChEff.cxx:228 AliAnalysisTaskTrigChEff.cxx:229 AliAnalysisTaskTrigChEff.cxx:230 AliAnalysisTaskTrigChEff.cxx:231 AliAnalysisTaskTrigChEff.cxx:232 AliAnalysisTaskTrigChEff.cxx:233 AliAnalysisTaskTrigChEff.cxx:234 AliAnalysisTaskTrigChEff.cxx:235 AliAnalysisTaskTrigChEff.cxx:236 AliAnalysisTaskTrigChEff.cxx:237 AliAnalysisTaskTrigChEff.cxx:238 AliAnalysisTaskTrigChEff.cxx:239 AliAnalysisTaskTrigChEff.cxx:240 AliAnalysisTaskTrigChEff.cxx:241 AliAnalysisTaskTrigChEff.cxx:242 AliAnalysisTaskTrigChEff.cxx:243 AliAnalysisTaskTrigChEff.cxx:244 AliAnalysisTaskTrigChEff.cxx:245 AliAnalysisTaskTrigChEff.cxx:246 AliAnalysisTaskTrigChEff.cxx:247 AliAnalysisTaskTrigChEff.cxx:248 AliAnalysisTaskTrigChEff.cxx:249 AliAnalysisTaskTrigChEff.cxx:250 AliAnalysisTaskTrigChEff.cxx:251 AliAnalysisTaskTrigChEff.cxx:252 AliAnalysisTaskTrigChEff.cxx:253 AliAnalysisTaskTrigChEff.cxx:254 AliAnalysisTaskTrigChEff.cxx:255 AliAnalysisTaskTrigChEff.cxx:256 AliAnalysisTaskTrigChEff.cxx:257 AliAnalysisTaskTrigChEff.cxx:258 AliAnalysisTaskTrigChEff.cxx:259 AliAnalysisTaskTrigChEff.cxx:260 AliAnalysisTaskTrigChEff.cxx:261 AliAnalysisTaskTrigChEff.cxx:262 AliAnalysisTaskTrigChEff.cxx:263 AliAnalysisTaskTrigChEff.cxx:264 AliAnalysisTaskTrigChEff.cxx:265 AliAnalysisTaskTrigChEff.cxx:266 AliAnalysisTaskTrigChEff.cxx:267 AliAnalysisTaskTrigChEff.cxx:268 AliAnalysisTaskTrigChEff.cxx:269 AliAnalysisTaskTrigChEff.cxx:270 AliAnalysisTaskTrigChEff.cxx:271 AliAnalysisTaskTrigChEff.cxx:272 AliAnalysisTaskTrigChEff.cxx:273 AliAnalysisTaskTrigChEff.cxx:274 AliAnalysisTaskTrigChEff.cxx:275 AliAnalysisTaskTrigChEff.cxx:276 AliAnalysisTaskTrigChEff.cxx:277 AliAnalysisTaskTrigChEff.cxx:278 AliAnalysisTaskTrigChEff.cxx:279 AliAnalysisTaskTrigChEff.cxx:280 AliAnalysisTaskTrigChEff.cxx:281 AliAnalysisTaskTrigChEff.cxx:282 AliAnalysisTaskTrigChEff.cxx:283 AliAnalysisTaskTrigChEff.cxx:284 AliAnalysisTaskTrigChEff.cxx:285 AliAnalysisTaskTrigChEff.cxx:286 AliAnalysisTaskTrigChEff.cxx:287 AliAnalysisTaskTrigChEff.cxx:288 AliAnalysisTaskTrigChEff.cxx:289 AliAnalysisTaskTrigChEff.cxx:290 AliAnalysisTaskTrigChEff.cxx:291 AliAnalysisTaskTrigChEff.cxx:292 AliAnalysisTaskTrigChEff.cxx:293 AliAnalysisTaskTrigChEff.cxx:294 AliAnalysisTaskTrigChEff.cxx:295 AliAnalysisTaskTrigChEff.cxx:296 AliAnalysisTaskTrigChEff.cxx:297 AliAnalysisTaskTrigChEff.cxx:298 AliAnalysisTaskTrigChEff.cxx:299 AliAnalysisTaskTrigChEff.cxx:300 AliAnalysisTaskTrigChEff.cxx:301 AliAnalysisTaskTrigChEff.cxx:302 AliAnalysisTaskTrigChEff.cxx:303 AliAnalysisTaskTrigChEff.cxx:304 AliAnalysisTaskTrigChEff.cxx:305 AliAnalysisTaskTrigChEff.cxx:306 AliAnalysisTaskTrigChEff.cxx:307 AliAnalysisTaskTrigChEff.cxx:308 AliAnalysisTaskTrigChEff.cxx:309 AliAnalysisTaskTrigChEff.cxx:310 AliAnalysisTaskTrigChEff.cxx:311 AliAnalysisTaskTrigChEff.cxx:312 AliAnalysisTaskTrigChEff.cxx:313 AliAnalysisTaskTrigChEff.cxx:314 AliAnalysisTaskTrigChEff.cxx:315 AliAnalysisTaskTrigChEff.cxx:316 AliAnalysisTaskTrigChEff.cxx:317 AliAnalysisTaskTrigChEff.cxx:318 AliAnalysisTaskTrigChEff.cxx:319 AliAnalysisTaskTrigChEff.cxx:320 AliAnalysisTaskTrigChEff.cxx:321 AliAnalysisTaskTrigChEff.cxx:322 AliAnalysisTaskTrigChEff.cxx:323 AliAnalysisTaskTrigChEff.cxx:324 AliAnalysisTaskTrigChEff.cxx:325 AliAnalysisTaskTrigChEff.cxx:326 AliAnalysisTaskTrigChEff.cxx:327 AliAnalysisTaskTrigChEff.cxx:328 AliAnalysisTaskTrigChEff.cxx:329 AliAnalysisTaskTrigChEff.cxx:330 AliAnalysisTaskTrigChEff.cxx:331 AliAnalysisTaskTrigChEff.cxx:332 AliAnalysisTaskTrigChEff.cxx:333 AliAnalysisTaskTrigChEff.cxx:334 AliAnalysisTaskTrigChEff.cxx:335 AliAnalysisTaskTrigChEff.cxx:336 AliAnalysisTaskTrigChEff.cxx:337 AliAnalysisTaskTrigChEff.cxx:338 AliAnalysisTaskTrigChEff.cxx:339 AliAnalysisTaskTrigChEff.cxx:340 AliAnalysisTaskTrigChEff.cxx:341 AliAnalysisTaskTrigChEff.cxx:342 AliAnalysisTaskTrigChEff.cxx:343 AliAnalysisTaskTrigChEff.cxx:344 AliAnalysisTaskTrigChEff.cxx:345 AliAnalysisTaskTrigChEff.cxx:346 AliAnalysisTaskTrigChEff.cxx:347 AliAnalysisTaskTrigChEff.cxx:348 AliAnalysisTaskTrigChEff.cxx:349 AliAnalysisTaskTrigChEff.cxx:350 AliAnalysisTaskTrigChEff.cxx:351 AliAnalysisTaskTrigChEff.cxx:352 AliAnalysisTaskTrigChEff.cxx:353 AliAnalysisTaskTrigChEff.cxx:354 AliAnalysisTaskTrigChEff.cxx:355 AliAnalysisTaskTrigChEff.cxx:356 AliAnalysisTaskTrigChEff.cxx:357 AliAnalysisTaskTrigChEff.cxx:358 AliAnalysisTaskTrigChEff.cxx:359 AliAnalysisTaskTrigChEff.cxx:360 AliAnalysisTaskTrigChEff.cxx:361 AliAnalysisTaskTrigChEff.cxx:362 AliAnalysisTaskTrigChEff.cxx:363 AliAnalysisTaskTrigChEff.cxx:364 AliAnalysisTaskTrigChEff.cxx:365 AliAnalysisTaskTrigChEff.cxx:366 AliAnalysisTaskTrigChEff.cxx:367 AliAnalysisTaskTrigChEff.cxx:368 AliAnalysisTaskTrigChEff.cxx:369 AliAnalysisTaskTrigChEff.cxx:370 AliAnalysisTaskTrigChEff.cxx:371 AliAnalysisTaskTrigChEff.cxx:372 AliAnalysisTaskTrigChEff.cxx:373 AliAnalysisTaskTrigChEff.cxx:374 AliAnalysisTaskTrigChEff.cxx:375 AliAnalysisTaskTrigChEff.cxx:376 AliAnalysisTaskTrigChEff.cxx:377 AliAnalysisTaskTrigChEff.cxx:378 AliAnalysisTaskTrigChEff.cxx:379 AliAnalysisTaskTrigChEff.cxx:380 AliAnalysisTaskTrigChEff.cxx:381 AliAnalysisTaskTrigChEff.cxx:382 AliAnalysisTaskTrigChEff.cxx:383 AliAnalysisTaskTrigChEff.cxx:384 AliAnalysisTaskTrigChEff.cxx:385 AliAnalysisTaskTrigChEff.cxx:386 AliAnalysisTaskTrigChEff.cxx:387 AliAnalysisTaskTrigChEff.cxx:388 AliAnalysisTaskTrigChEff.cxx:389 AliAnalysisTaskTrigChEff.cxx:390 AliAnalysisTaskTrigChEff.cxx:391 AliAnalysisTaskTrigChEff.cxx:392 AliAnalysisTaskTrigChEff.cxx:393 AliAnalysisTaskTrigChEff.cxx:394 AliAnalysisTaskTrigChEff.cxx:395 AliAnalysisTaskTrigChEff.cxx:396 AliAnalysisTaskTrigChEff.cxx:397 AliAnalysisTaskTrigChEff.cxx:398 AliAnalysisTaskTrigChEff.cxx:399 AliAnalysisTaskTrigChEff.cxx:400 AliAnalysisTaskTrigChEff.cxx:401 AliAnalysisTaskTrigChEff.cxx:402 AliAnalysisTaskTrigChEff.cxx:403 AliAnalysisTaskTrigChEff.cxx:404 AliAnalysisTaskTrigChEff.cxx:405 AliAnalysisTaskTrigChEff.cxx:406 AliAnalysisTaskTrigChEff.cxx:407 AliAnalysisTaskTrigChEff.cxx:408 AliAnalysisTaskTrigChEff.cxx:409 AliAnalysisTaskTrigChEff.cxx:410 AliAnalysisTaskTrigChEff.cxx:411 AliAnalysisTaskTrigChEff.cxx:412 AliAnalysisTaskTrigChEff.cxx:413 AliAnalysisTaskTrigChEff.cxx:414 AliAnalysisTaskTrigChEff.cxx:415 AliAnalysisTaskTrigChEff.cxx:416 AliAnalysisTaskTrigChEff.cxx:417 AliAnalysisTaskTrigChEff.cxx:418 AliAnalysisTaskTrigChEff.cxx:419 AliAnalysisTaskTrigChEff.cxx:420 AliAnalysisTaskTrigChEff.cxx:421 AliAnalysisTaskTrigChEff.cxx:422 AliAnalysisTaskTrigChEff.cxx:423 AliAnalysisTaskTrigChEff.cxx:424 AliAnalysisTaskTrigChEff.cxx:425 AliAnalysisTaskTrigChEff.cxx:426 AliAnalysisTaskTrigChEff.cxx:427 AliAnalysisTaskTrigChEff.cxx:428 AliAnalysisTaskTrigChEff.cxx:429 AliAnalysisTaskTrigChEff.cxx:430 AliAnalysisTaskTrigChEff.cxx:431 AliAnalysisTaskTrigChEff.cxx:432 AliAnalysisTaskTrigChEff.cxx:433 AliAnalysisTaskTrigChEff.cxx:434 AliAnalysisTaskTrigChEff.cxx:435 AliAnalysisTaskTrigChEff.cxx:436 AliAnalysisTaskTrigChEff.cxx:437 AliAnalysisTaskTrigChEff.cxx:438 AliAnalysisTaskTrigChEff.cxx:439 AliAnalysisTaskTrigChEff.cxx:440 AliAnalysisTaskTrigChEff.cxx:441 AliAnalysisTaskTrigChEff.cxx:442 AliAnalysisTaskTrigChEff.cxx:443 AliAnalysisTaskTrigChEff.cxx:444 AliAnalysisTaskTrigChEff.cxx:445 AliAnalysisTaskTrigChEff.cxx:446 AliAnalysisTaskTrigChEff.cxx:447 AliAnalysisTaskTrigChEff.cxx:448 AliAnalysisTaskTrigChEff.cxx:449 AliAnalysisTaskTrigChEff.cxx:450 AliAnalysisTaskTrigChEff.cxx:451 AliAnalysisTaskTrigChEff.cxx:452 AliAnalysisTaskTrigChEff.cxx:453 AliAnalysisTaskTrigChEff.cxx:454 AliAnalysisTaskTrigChEff.cxx:455 AliAnalysisTaskTrigChEff.cxx:456 AliAnalysisTaskTrigChEff.cxx:457 AliAnalysisTaskTrigChEff.cxx:458 AliAnalysisTaskTrigChEff.cxx:459 AliAnalysisTaskTrigChEff.cxx:460 AliAnalysisTaskTrigChEff.cxx:461 AliAnalysisTaskTrigChEff.cxx:462 AliAnalysisTaskTrigChEff.cxx:463 AliAnalysisTaskTrigChEff.cxx:464 AliAnalysisTaskTrigChEff.cxx:465 AliAnalysisTaskTrigChEff.cxx:466 AliAnalysisTaskTrigChEff.cxx:467 AliAnalysisTaskTrigChEff.cxx:468 AliAnalysisTaskTrigChEff.cxx:469 AliAnalysisTaskTrigChEff.cxx:470 AliAnalysisTaskTrigChEff.cxx:471 AliAnalysisTaskTrigChEff.cxx:472 AliAnalysisTaskTrigChEff.cxx:473 AliAnalysisTaskTrigChEff.cxx:474 AliAnalysisTaskTrigChEff.cxx:475 AliAnalysisTaskTrigChEff.cxx:476 AliAnalysisTaskTrigChEff.cxx:477 AliAnalysisTaskTrigChEff.cxx:478 AliAnalysisTaskTrigChEff.cxx:479 AliAnalysisTaskTrigChEff.cxx:480 AliAnalysisTaskTrigChEff.cxx:481 AliAnalysisTaskTrigChEff.cxx:482 AliAnalysisTaskTrigChEff.cxx:483 AliAnalysisTaskTrigChEff.cxx:484 AliAnalysisTaskTrigChEff.cxx:485 AliAnalysisTaskTrigChEff.cxx:486 AliAnalysisTaskTrigChEff.cxx:487 AliAnalysisTaskTrigChEff.cxx:488 AliAnalysisTaskTrigChEff.cxx:489 AliAnalysisTaskTrigChEff.cxx:490 AliAnalysisTaskTrigChEff.cxx:491 AliAnalysisTaskTrigChEff.cxx:492 AliAnalysisTaskTrigChEff.cxx:493 AliAnalysisTaskTrigChEff.cxx:494 AliAnalysisTaskTrigChEff.cxx:495 AliAnalysisTaskTrigChEff.cxx:496 AliAnalysisTaskTrigChEff.cxx:497 AliAnalysisTaskTrigChEff.cxx:498 AliAnalysisTaskTrigChEff.cxx:499 AliAnalysisTaskTrigChEff.cxx:500 AliAnalysisTaskTrigChEff.cxx:501 AliAnalysisTaskTrigChEff.cxx:502 AliAnalysisTaskTrigChEff.cxx:503 AliAnalysisTaskTrigChEff.cxx:504 AliAnalysisTaskTrigChEff.cxx:505 AliAnalysisTaskTrigChEff.cxx:506 AliAnalysisTaskTrigChEff.cxx:507 AliAnalysisTaskTrigChEff.cxx:508 AliAnalysisTaskTrigChEff.cxx:509 AliAnalysisTaskTrigChEff.cxx:510 AliAnalysisTaskTrigChEff.cxx:511 AliAnalysisTaskTrigChEff.cxx:512 AliAnalysisTaskTrigChEff.cxx:513 AliAnalysisTaskTrigChEff.cxx:514 AliAnalysisTaskTrigChEff.cxx:515 AliAnalysisTaskTrigChEff.cxx:516 AliAnalysisTaskTrigChEff.cxx:517 AliAnalysisTaskTrigChEff.cxx:518 AliAnalysisTaskTrigChEff.cxx:519 AliAnalysisTaskTrigChEff.cxx:520 AliAnalysisTaskTrigChEff.cxx:521 AliAnalysisTaskTrigChEff.cxx:522 AliAnalysisTaskTrigChEff.cxx:523 AliAnalysisTaskTrigChEff.cxx:524 AliAnalysisTaskTrigChEff.cxx:525 AliAnalysisTaskTrigChEff.cxx:526 AliAnalysisTaskTrigChEff.cxx:527 AliAnalysisTaskTrigChEff.cxx:528 AliAnalysisTaskTrigChEff.cxx:529 AliAnalysisTaskTrigChEff.cxx:530 AliAnalysisTaskTrigChEff.cxx:531 AliAnalysisTaskTrigChEff.cxx:532 AliAnalysisTaskTrigChEff.cxx:533 AliAnalysisTaskTrigChEff.cxx:534 AliAnalysisTaskTrigChEff.cxx:535 AliAnalysisTaskTrigChEff.cxx:536 AliAnalysisTaskTrigChEff.cxx:537 AliAnalysisTaskTrigChEff.cxx:538 AliAnalysisTaskTrigChEff.cxx:539 AliAnalysisTaskTrigChEff.cxx:540 AliAnalysisTaskTrigChEff.cxx:541 AliAnalysisTaskTrigChEff.cxx:542 AliAnalysisTaskTrigChEff.cxx:543 AliAnalysisTaskTrigChEff.cxx:544 AliAnalysisTaskTrigChEff.cxx:545 AliAnalysisTaskTrigChEff.cxx:546 AliAnalysisTaskTrigChEff.cxx:547 AliAnalysisTaskTrigChEff.cxx:548 AliAnalysisTaskTrigChEff.cxx:549 AliAnalysisTaskTrigChEff.cxx:550 AliAnalysisTaskTrigChEff.cxx:551 AliAnalysisTaskTrigChEff.cxx:552 AliAnalysisTaskTrigChEff.cxx:553 AliAnalysisTaskTrigChEff.cxx:554 AliAnalysisTaskTrigChEff.cxx:555 AliAnalysisTaskTrigChEff.cxx:556 AliAnalysisTaskTrigChEff.cxx:557 AliAnalysisTaskTrigChEff.cxx:558 AliAnalysisTaskTrigChEff.cxx:559 AliAnalysisTaskTrigChEff.cxx:560 AliAnalysisTaskTrigChEff.cxx:561 AliAnalysisTaskTrigChEff.cxx:562 AliAnalysisTaskTrigChEff.cxx:563 AliAnalysisTaskTrigChEff.cxx:564 AliAnalysisTaskTrigChEff.cxx:565 AliAnalysisTaskTrigChEff.cxx:566 AliAnalysisTaskTrigChEff.cxx:567 AliAnalysisTaskTrigChEff.cxx:568 AliAnalysisTaskTrigChEff.cxx:569 AliAnalysisTaskTrigChEff.cxx:570 AliAnalysisTaskTrigChEff.cxx:571 AliAnalysisTaskTrigChEff.cxx:572 AliAnalysisTaskTrigChEff.cxx:573 AliAnalysisTaskTrigChEff.cxx:574 AliAnalysisTaskTrigChEff.cxx:575 AliAnalysisTaskTrigChEff.cxx:576 AliAnalysisTaskTrigChEff.cxx:577 AliAnalysisTaskTrigChEff.cxx:578 AliAnalysisTaskTrigChEff.cxx:579 AliAnalysisTaskTrigChEff.cxx:580 AliAnalysisTaskTrigChEff.cxx:581 AliAnalysisTaskTrigChEff.cxx:582 AliAnalysisTaskTrigChEff.cxx:583 AliAnalysisTaskTrigChEff.cxx:584 AliAnalysisTaskTrigChEff.cxx:585 AliAnalysisTaskTrigChEff.cxx:586 AliAnalysisTaskTrigChEff.cxx:587 AliAnalysisTaskTrigChEff.cxx:588 AliAnalysisTaskTrigChEff.cxx:589 AliAnalysisTaskTrigChEff.cxx:590 AliAnalysisTaskTrigChEff.cxx:591 AliAnalysisTaskTrigChEff.cxx:592 AliAnalysisTaskTrigChEff.cxx:593 AliAnalysisTaskTrigChEff.cxx:594 AliAnalysisTaskTrigChEff.cxx:595 AliAnalysisTaskTrigChEff.cxx:596 AliAnalysisTaskTrigChEff.cxx:597 AliAnalysisTaskTrigChEff.cxx:598 AliAnalysisTaskTrigChEff.cxx:599 AliAnalysisTaskTrigChEff.cxx:600 AliAnalysisTaskTrigChEff.cxx:601 AliAnalysisTaskTrigChEff.cxx:602 AliAnalysisTaskTrigChEff.cxx:603 AliAnalysisTaskTrigChEff.cxx:604 AliAnalysisTaskTrigChEff.cxx:605 AliAnalysisTaskTrigChEff.cxx:606 AliAnalysisTaskTrigChEff.cxx:607 AliAnalysisTaskTrigChEff.cxx:608 AliAnalysisTaskTrigChEff.cxx:609 AliAnalysisTaskTrigChEff.cxx:610 AliAnalysisTaskTrigChEff.cxx:611 AliAnalysisTaskTrigChEff.cxx:612 AliAnalysisTaskTrigChEff.cxx:613 AliAnalysisTaskTrigChEff.cxx:614 AliAnalysisTaskTrigChEff.cxx:615 AliAnalysisTaskTrigChEff.cxx:616 AliAnalysisTaskTrigChEff.cxx:617 AliAnalysisTaskTrigChEff.cxx:618 AliAnalysisTaskTrigChEff.cxx:619 AliAnalysisTaskTrigChEff.cxx:620 AliAnalysisTaskTrigChEff.cxx:621 AliAnalysisTaskTrigChEff.cxx:622 AliAnalysisTaskTrigChEff.cxx:623 AliAnalysisTaskTrigChEff.cxx:624 AliAnalysisTaskTrigChEff.cxx:625 AliAnalysisTaskTrigChEff.cxx:626 AliAnalysisTaskTrigChEff.cxx:627 AliAnalysisTaskTrigChEff.cxx:628 AliAnalysisTaskTrigChEff.cxx:629 AliAnalysisTaskTrigChEff.cxx:630 AliAnalysisTaskTrigChEff.cxx:631 AliAnalysisTaskTrigChEff.cxx:632 AliAnalysisTaskTrigChEff.cxx:633 AliAnalysisTaskTrigChEff.cxx:634 AliAnalysisTaskTrigChEff.cxx:635 AliAnalysisTaskTrigChEff.cxx:636 AliAnalysisTaskTrigChEff.cxx:637 AliAnalysisTaskTrigChEff.cxx:638 AliAnalysisTaskTrigChEff.cxx:639 AliAnalysisTaskTrigChEff.cxx:640 AliAnalysisTaskTrigChEff.cxx:641 AliAnalysisTaskTrigChEff.cxx:642 AliAnalysisTaskTrigChEff.cxx:643 AliAnalysisTaskTrigChEff.cxx:644 AliAnalysisTaskTrigChEff.cxx:645 AliAnalysisTaskTrigChEff.cxx:646 AliAnalysisTaskTrigChEff.cxx:647 AliAnalysisTaskTrigChEff.cxx:648 AliAnalysisTaskTrigChEff.cxx:649 AliAnalysisTaskTrigChEff.cxx:650 AliAnalysisTaskTrigChEff.cxx:651 AliAnalysisTaskTrigChEff.cxx:652 AliAnalysisTaskTrigChEff.cxx:653 AliAnalysisTaskTrigChEff.cxx:654 AliAnalysisTaskTrigChEff.cxx:655 AliAnalysisTaskTrigChEff.cxx:656 AliAnalysisTaskTrigChEff.cxx:657 AliAnalysisTaskTrigChEff.cxx:658 AliAnalysisTaskTrigChEff.cxx:659 AliAnalysisTaskTrigChEff.cxx:660 AliAnalysisTaskTrigChEff.cxx:661 AliAnalysisTaskTrigChEff.cxx:662 AliAnalysisTaskTrigChEff.cxx:663 AliAnalysisTaskTrigChEff.cxx:664 AliAnalysisTaskTrigChEff.cxx:665 AliAnalysisTaskTrigChEff.cxx:666 AliAnalysisTaskTrigChEff.cxx:667 AliAnalysisTaskTrigChEff.cxx:668 AliAnalysisTaskTrigChEff.cxx:669 AliAnalysisTaskTrigChEff.cxx:670 AliAnalysisTaskTrigChEff.cxx:671 AliAnalysisTaskTrigChEff.cxx:672 AliAnalysisTaskTrigChEff.cxx:673 AliAnalysisTaskTrigChEff.cxx:674 AliAnalysisTaskTrigChEff.cxx:675 AliAnalysisTaskTrigChEff.cxx:676 AliAnalysisTaskTrigChEff.cxx:677 AliAnalysisTaskTrigChEff.cxx:678 AliAnalysisTaskTrigChEff.cxx:679 AliAnalysisTaskTrigChEff.cxx:680 AliAnalysisTaskTrigChEff.cxx:681 AliAnalysisTaskTrigChEff.cxx:682 AliAnalysisTaskTrigChEff.cxx:683 AliAnalysisTaskTrigChEff.cxx:684 AliAnalysisTaskTrigChEff.cxx:685 AliAnalysisTaskTrigChEff.cxx:686 AliAnalysisTaskTrigChEff.cxx:687 AliAnalysisTaskTrigChEff.cxx:688 AliAnalysisTaskTrigChEff.cxx:689 AliAnalysisTaskTrigChEff.cxx:690 AliAnalysisTaskTrigChEff.cxx:691 AliAnalysisTaskTrigChEff.cxx:692 AliAnalysisTaskTrigChEff.cxx:693 AliAnalysisTaskTrigChEff.cxx:694 AliAnalysisTaskTrigChEff.cxx:695 AliAnalysisTaskTrigChEff.cxx:696 AliAnalysisTaskTrigChEff.cxx:697 AliAnalysisTaskTrigChEff.cxx:698 AliAnalysisTaskTrigChEff.cxx:699 AliAnalysisTaskTrigChEff.cxx:700