8 #include "AliAODEvent.h"
9 #include "AliESDEvent.h"
15 AliPhysicsSelection(),
28 fMinCellTrackScale(-1),
29 fMaxCellTrackScale(-1),
45 const AliVEvent *ev =
dynamic_cast<const AliVEvent*
>(obj);
49 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
52 const AliESDEvent *eev =
dynamic_cast<const AliESDEvent*
>(obj);
53 const AliAODEvent *aev = 0;
55 am->LoadBranch(
"AliESDHeader.");
56 am->LoadBranch(
"AliESDRun.");
57 TString
title(eev->GetHeader()->GetTitle());
58 if (1&&(
title.Length()>0)) {
59 res = ((AliVAODHeader*)eev->GetHeader())->GetUniqueID();
62 res = IsCollisionCandidate(eev);
65 aev =
dynamic_cast<const AliAODEvent*
>(obj);
66 res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
74 if ((eev==0) && (aev==0))
89 if ((res & AliVEvent::kAnyINT) ||
90 (res & AliVEvent::kSemiCentral) ||
91 (res & AliVEvent::kCentral) ||
92 (res & AliVEvent::kEMC1) ||
93 (res & AliVEvent::kEMC7) ||
94 (res & AliVEvent::kEMCEJE) ||
95 (res & AliVEvent::kEMCEGA))
102 Double_t vzPRI = +999;
103 Double_t vzSPD = -999;
104 const AliVVertex *pv = 0;
106 am->LoadBranch(
"PrimaryVertex.");
107 pv = eev->GetPrimaryVertex();
109 pv = aev->GetPrimaryVertex();
111 if (pv && pv->GetNContributors()>0) {
114 const AliVVertex *sv = 0;
116 am->LoadBranch(
"SPDVertex.");
117 sv = eev->GetPrimaryVertexSPD();
119 sv = aev->GetPrimaryVertexSPD();
121 if (sv && sv->GetNContributors()>0) {
124 Double_t dvertex = TMath::Abs(vzPRI-vzSPD);
135 Double_t v0mcent = -1;
136 AliCentrality *centin = 0;
138 TTree *tree = am->GetTree();
139 if (tree->GetBranch(
"Centrality."))
140 am->LoadBranch(
"Centrality.");
141 centin =
dynamic_cast<AliCentrality*
>(eev->FindListObject(
"Centrality"));
143 centin =
const_cast<AliAODEvent*
>(aev)->GetCentrality();
146 v0mcent = centin->GetCentralityPercentileUnchecked(
"V0M");
151 AliVCaloCells *cells = ev->GetEMCALCells();
152 const Short_t nCells = cells->GetNumberOfCells();
155 if (res & AliVEvent::kFastOnly) {
159 AliFatal(Form(
"Number of cells %d, even though EMCAL should not be in fast only partition.",nCells));
167 am->LoadBranch(
"EMCALCells.");
168 for(Int_t iCell=0; iCell<nCells; ++iCell) {
169 Short_t cellId = cells->GetCellNumber(iCell);
170 Double_t cellE = cells->GetCellAmplitude(cellId);
178 am->LoadBranch(
"CaloClusters");
180 const Int_t nCaloClusters = ev->GetNumberOfCaloClusters();
181 for(Int_t iClus = 0; iClus<nCaloClusters; ++iClus) {
182 AliVCluster *cl = ev->GetCaloCluster(iClus);
185 Double_t e = cl->E();
191 TClonesArray *trks = 0;
196 am->LoadBranch(
"PicoTracks");
197 trks =
dynamic_cast<TClonesArray*
>(eev->FindListObject(
"PicoTracks"));
199 am->LoadBranch(
"Tracks");
200 trks =
dynamic_cast<TClonesArray*
>(eev->FindListObject(
"Tracks"));
203 trks =
dynamic_cast<TClonesArray*
>(aev->FindListObject(
"tracks"));
206 Ntracks = trks->GetEntriesFast();
209 Int_t nAccTracks = 0;
212 for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
213 AliVTrack *track =
static_cast<AliVTrack*
>(trks->At(iTracks));
217 AliAODTrack *aodtrack =
static_cast<AliAODTrack*
>(track);
218 if (!aodtrack->TestFilterBit(256) && !aodtrack->TestFilterBit(512))
222 Double_t pt = track->Pt();
229 if (nCells < fMinCellTrackScale * nAccTracks || nCells >
fMaxCellTrackScale * nAccTracks)
235 const Int_t runN = ev->GetRunNumber();
236 if ((runN>=144871) && (runN<=146860)) {
239 am->LoadBranch(
"EMCALCells.");
242 Int_t nCellCount[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
243 for(Int_t iCell=0; iCell<nCells; ++iCell) {
244 Short_t cellId = cells->GetCellNumber(iCell);
245 Double_t cellE = cells->GetCellAmplitude(cellId);
246 Int_t sm = cellId / (24*48);
251 if (nCellCount[4] > 100)
254 if ((runN>=146858) && (runN<=146860)) {
255 if ((res&AliVEvent::kMB) && (nCellCount[3]>=21))
257 else if ((res&AliVEvent::kEMC1) && (nCellCount[3]>=35))
Bool_t fIsGoodEvent
=true if LED event is found
Double_t fMinCellTrackScale
ClassImp(AliEmcalPhysicsSelection) AliEmcalPhysicsSelection
Double_t fCellMaxE
=true if good EMCAL event
Bool_t fIsLedEvent
=true if FASTONLY event is found
Double_t fMaxCellTrackScale
virtual UInt_t GetSelectionMask(const TObject *obj)
Double_t fClusMaxE
maximum cell energy in event
Double_t fTrackMaxPt
maximum clus energy in event