#include "AliEmcalPhysicsSelection.h"
#include "AliAODEvent.h"
#include "AliESDEvent.h"
#include "AliLog.h"
ClassImp(AliEmcalPhysicsSelection)
AliEmcalPhysicsSelection::AliEmcalPhysicsSelection() :
AliPhysicsSelection(),
fMarkFastOnly(0),
fMarkLedEvent(0),
fSkipFastOnly(0),
fSkipLedEvent(0),
fCellMinE(-1),
fClusMinE(-1),
fTrackMinPt(-1),
fTriggers(0),
fZvertex(-1),
fZvertexDiff(0),
fCentMin(-1),
fCentMax(-1),
fMinCellTrackScale(-1),
fMaxCellTrackScale(-1),
fIsFastOnly(0),
fIsLedEvent(0),
fIsGoodEvent(0),
fCellMaxE(0),
fClusMaxE(0),
fTrackMaxPt(0)
{
}
UInt_t AliEmcalPhysicsSelection::GetSelectionMask(const TObject* obj)
{
const AliVEvent *ev = dynamic_cast<const AliVEvent*>(obj);
if (!ev)
return 0;
AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
UInt_t res = 0;
const AliESDEvent *eev = dynamic_cast<const AliESDEvent*>(obj);
const AliAODEvent *aev = 0;
if (eev) {
am->LoadBranch("AliESDHeader.");
am->LoadBranch("AliESDRun.");
TString title(eev->GetHeader()->GetTitle());
if (1&&(title.Length()>0)) {
res = ((AliVAODHeader*)eev->GetHeader())->GetUniqueID();
res &= 0x4FFFFFFF;
} else {
res = IsCollisionCandidate(eev);
}
} else {
aev = dynamic_cast<const AliAODEvent*>(obj);
res = ((AliVAODHeader*)aev->GetHeader())->GetOfflineTrigger();
}
if (res==0)
return 0;
if ((eev==0) && (aev==0))
return 0;
if (fTriggers) {
if ((res & fTriggers) == 0)
return res;
}
fIsFastOnly = kFALSE;
fIsGoodEvent = kFALSE;
fIsLedEvent = kFALSE;
fCellMaxE = -1;
fClusMaxE = -1;
fTrackMaxPt = -1;
if ((res & AliVEvent::kAnyINT) ||
(res & AliVEvent::kSemiCentral) ||
(res & AliVEvent::kCentral) ||
(res & AliVEvent::kEMC1) ||
(res & AliVEvent::kEMC7) ||
(res & AliVEvent::kEMCEJE) ||
(res & AliVEvent::kEMCEGA))
fIsGoodEvent = kTRUE;
else {
return 0;
}
if (fZvertexDiff || (fZvertex>0)) {
Double_t vzPRI = +999;
Double_t vzSPD = -999;
const AliVVertex *pv = 0;
if (eev) {
am->LoadBranch("PrimaryVertex.");
pv = eev->GetPrimaryVertex();
} else {
pv = aev->GetPrimaryVertex();
}
if (pv && pv->GetNContributors()>0) {
vzPRI = pv->GetZ();
}
const AliVVertex *sv = 0;
if (eev) {
am->LoadBranch("SPDVertex.");
sv = eev->GetPrimaryVertexSPD();
} else {
sv = aev->GetPrimaryVertexSPD();
}
if (sv && sv->GetNContributors()>0) {
vzSPD = sv->GetZ();
}
Double_t dvertex = TMath::Abs(vzPRI-vzSPD);
if (fZvertexDiff && (dvertex>0.1))
fIsGoodEvent = kFALSE;
if ((fZvertex>0) && (TMath::Abs(vzPRI)>fZvertex))
fIsGoodEvent = kFALSE;
}
if ((fCentMin>-1) && (fCentMax>-1)) {
Double_t v0mcent = -1;
AliCentrality *centin = 0;
if (eev) {
TTree *tree = am->GetTree();
if (tree->GetBranch("Centrality."))
am->LoadBranch("Centrality.");
centin = dynamic_cast<AliCentrality*>(eev->FindListObject("Centrality"));
} else {
centin = const_cast<AliAODEvent*>(aev)->GetCentrality();
}
if (centin)
v0mcent = centin->GetCentralityPercentileUnchecked("V0M");
if ((v0mcent<fCentMin) || (v0mcent>fCentMax))
fIsGoodEvent = kFALSE;
}
AliVCaloCells *cells = ev->GetEMCALCells();
const Short_t nCells = cells->GetNumberOfCells();
if (res & AliVEvent::kFastOnly) {
fIsFastOnly = kTRUE;
if (fMarkFastOnly||fSkipFastOnly) {
if (nCells>0) {
AliFatal(Form("Number of cells %d, even though EMCAL should not be in fast only partition.",nCells));
}
fIsGoodEvent = kFALSE;
}
}
if (fCellMinE>0) {
if (eev)
am->LoadBranch("EMCALCells.");
for(Int_t iCell=0; iCell<nCells; ++iCell) {
Short_t cellId = cells->GetCellNumber(iCell);
Double_t cellE = cells->GetCellAmplitude(cellId);
if (cellE>fCellMaxE)
fCellMaxE = cellE;
}
}
if (fClusMinE>0) {
if (eev)
am->LoadBranch("CaloClusters");
const Int_t nCaloClusters = ev->GetNumberOfCaloClusters();
for(Int_t iClus = 0; iClus<nCaloClusters; ++iClus) {
AliVCluster *cl = ev->GetCaloCluster(iClus);
if (!cl->IsEMCAL())
continue;
Double_t e = cl->E();
if (e>fClusMaxE)
fClusMaxE = e;
}
}
TClonesArray *trks = 0;
Int_t Ntracks = 0;
if (fTrackMinPt>0 || fMinCellTrackScale > 0 || fMaxCellTrackScale > 0) {
if (eev) {
am->LoadBranch("PicoTracks");
trks = dynamic_cast<TClonesArray*>(eev->FindListObject("PicoTracks"));
if (!trks) {
am->LoadBranch("Tracks");
trks = dynamic_cast<TClonesArray*>(eev->FindListObject("Tracks"));
}
} else {
trks = dynamic_cast<TClonesArray*>(aev->FindListObject("tracks"));
}
if (trks)
Ntracks = trks->GetEntriesFast();
}
Int_t nAccTracks = 0;
if (fTrackMinPt>0 || fMinCellTrackScale > 0 || fMaxCellTrackScale > 0) {
for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
AliVTrack *track = static_cast<AliVTrack*>(trks->At(iTracks));
if (!track)
continue;
if (aev) {
AliAODTrack *aodtrack = static_cast<AliAODTrack*>(track);
if (!aodtrack->TestFilterBit(256) && !aodtrack->TestFilterBit(512))
continue;
}
nAccTracks++;
Double_t pt = track->Pt();
if (pt>fTrackMaxPt)
fTrackMaxPt = pt;
}
}
if (fMinCellTrackScale > 0 || fMaxCellTrackScale > 0) {
if (nCells < fMinCellTrackScale * nAccTracks || nCells > fMaxCellTrackScale * nAccTracks)
fIsGoodEvent = kFALSE;
}
const Int_t runN = ev->GetRunNumber();
if ((runN>=144871) && (runN<=146860)) {
if (eev)
am->LoadBranch("EMCALCells.");
Int_t nCellCount[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
for(Int_t iCell=0; iCell<nCells; ++iCell) {
Short_t cellId = cells->GetCellNumber(iCell);
Double_t cellE = cells->GetCellAmplitude(cellId);
Int_t sm = cellId / (24*48);
if (cellE>0.1)
++nCellCount[sm];
}
if (nCellCount[4] > 100)
fIsLedEvent = kTRUE;
else {
if ((runN>=146858) && (runN<=146860)) {
if ((res&AliVEvent::kMB) && (nCellCount[3]>=21))
fIsLedEvent = kTRUE;
else if ((res&AliVEvent::kEMC1) && (nCellCount[3]>=35))
fIsLedEvent = kTRUE;
}
}
if (fIsLedEvent) {
fIsGoodEvent = kFALSE;
}
}
if (fSkip1024Bug) {
AliVCaloTrigger *emcaltriggers = ev->GetCaloTrigger(eev == NULL ? "EMCALTrigger" : "emcalTrigger");
if(emcaltriggers){
emcaltriggers->Reset();
Int_t adc;
Bool_t isBad = false;
while(emcaltriggers->Next()){
emcaltriggers->GetL1TimeSum(adc);
isBad = false;
for(int i = 1; i < 20; i++){
if(adc == 1024 * i){
isBad = true;
break;
}
}
if(isBad){
fIsGoodEvent = kFALSE;
break;
}
}
}
}
if (fIsGoodEvent) {
if (fCellMaxE>fCellMinE)
res |= kEmcalHC;
if ((fClusMaxE>fClusMinE) || (fTrackMaxPt>fTrackMinPt))
res |= kEmcalHT;
res |= kEmcalOk;
}
if ((fSkipLedEvent && fIsLedEvent) ||
(fSkipFastOnly && fIsFastOnly))
res = 0;
return res;
}
AliEmcalPhysicsSelection.cxx:1 AliEmcalPhysicsSelection.cxx:2 AliEmcalPhysicsSelection.cxx:3 AliEmcalPhysicsSelection.cxx:4 AliEmcalPhysicsSelection.cxx:5 AliEmcalPhysicsSelection.cxx:6 AliEmcalPhysicsSelection.cxx:7 AliEmcalPhysicsSelection.cxx:8 AliEmcalPhysicsSelection.cxx:9 AliEmcalPhysicsSelection.cxx:10 AliEmcalPhysicsSelection.cxx:11 AliEmcalPhysicsSelection.cxx:12 AliEmcalPhysicsSelection.cxx:13 AliEmcalPhysicsSelection.cxx:14 AliEmcalPhysicsSelection.cxx:15 AliEmcalPhysicsSelection.cxx:16 AliEmcalPhysicsSelection.cxx:17 AliEmcalPhysicsSelection.cxx:18 AliEmcalPhysicsSelection.cxx:19 AliEmcalPhysicsSelection.cxx:20 AliEmcalPhysicsSelection.cxx:21 AliEmcalPhysicsSelection.cxx:22 AliEmcalPhysicsSelection.cxx:23 AliEmcalPhysicsSelection.cxx:24 AliEmcalPhysicsSelection.cxx:25 AliEmcalPhysicsSelection.cxx:26 AliEmcalPhysicsSelection.cxx:27 AliEmcalPhysicsSelection.cxx:28 AliEmcalPhysicsSelection.cxx:29 AliEmcalPhysicsSelection.cxx:30 AliEmcalPhysicsSelection.cxx:31 AliEmcalPhysicsSelection.cxx:32 AliEmcalPhysicsSelection.cxx:33 AliEmcalPhysicsSelection.cxx:34 AliEmcalPhysicsSelection.cxx:35 AliEmcalPhysicsSelection.cxx:36 AliEmcalPhysicsSelection.cxx:37 AliEmcalPhysicsSelection.cxx:38 AliEmcalPhysicsSelection.cxx:39 AliEmcalPhysicsSelection.cxx:40 AliEmcalPhysicsSelection.cxx:41 AliEmcalPhysicsSelection.cxx:42 AliEmcalPhysicsSelection.cxx:43 AliEmcalPhysicsSelection.cxx:44 AliEmcalPhysicsSelection.cxx:45 AliEmcalPhysicsSelection.cxx:46 AliEmcalPhysicsSelection.cxx:47 AliEmcalPhysicsSelection.cxx:48 AliEmcalPhysicsSelection.cxx:49 AliEmcalPhysicsSelection.cxx:50 AliEmcalPhysicsSelection.cxx:51 AliEmcalPhysicsSelection.cxx:52 AliEmcalPhysicsSelection.cxx:53 AliEmcalPhysicsSelection.cxx:54 AliEmcalPhysicsSelection.cxx:55 AliEmcalPhysicsSelection.cxx:56 AliEmcalPhysicsSelection.cxx:57 AliEmcalPhysicsSelection.cxx:58 AliEmcalPhysicsSelection.cxx:59 AliEmcalPhysicsSelection.cxx:60 AliEmcalPhysicsSelection.cxx:61 AliEmcalPhysicsSelection.cxx:62 AliEmcalPhysicsSelection.cxx:63 AliEmcalPhysicsSelection.cxx:64 AliEmcalPhysicsSelection.cxx:65 AliEmcalPhysicsSelection.cxx:66 AliEmcalPhysicsSelection.cxx:67 AliEmcalPhysicsSelection.cxx:68 AliEmcalPhysicsSelection.cxx:69 AliEmcalPhysicsSelection.cxx:70 AliEmcalPhysicsSelection.cxx:71 AliEmcalPhysicsSelection.cxx:72 AliEmcalPhysicsSelection.cxx:73 AliEmcalPhysicsSelection.cxx:74 AliEmcalPhysicsSelection.cxx:75 AliEmcalPhysicsSelection.cxx:76 AliEmcalPhysicsSelection.cxx:77 AliEmcalPhysicsSelection.cxx:78 AliEmcalPhysicsSelection.cxx:79 AliEmcalPhysicsSelection.cxx:80 AliEmcalPhysicsSelection.cxx:81 AliEmcalPhysicsSelection.cxx:82 AliEmcalPhysicsSelection.cxx:83 AliEmcalPhysicsSelection.cxx:84 AliEmcalPhysicsSelection.cxx:85 AliEmcalPhysicsSelection.cxx:86 AliEmcalPhysicsSelection.cxx:87 AliEmcalPhysicsSelection.cxx:88 AliEmcalPhysicsSelection.cxx:89 AliEmcalPhysicsSelection.cxx:90 AliEmcalPhysicsSelection.cxx:91 AliEmcalPhysicsSelection.cxx:92 AliEmcalPhysicsSelection.cxx:93 AliEmcalPhysicsSelection.cxx:94 AliEmcalPhysicsSelection.cxx:95 AliEmcalPhysicsSelection.cxx:96 AliEmcalPhysicsSelection.cxx:97 AliEmcalPhysicsSelection.cxx:98 AliEmcalPhysicsSelection.cxx:99 AliEmcalPhysicsSelection.cxx:100 AliEmcalPhysicsSelection.cxx:101 AliEmcalPhysicsSelection.cxx:102 AliEmcalPhysicsSelection.cxx:103 AliEmcalPhysicsSelection.cxx:104 AliEmcalPhysicsSelection.cxx:105 AliEmcalPhysicsSelection.cxx:106 AliEmcalPhysicsSelection.cxx:107 AliEmcalPhysicsSelection.cxx:108 AliEmcalPhysicsSelection.cxx:109 AliEmcalPhysicsSelection.cxx:110 AliEmcalPhysicsSelection.cxx:111 AliEmcalPhysicsSelection.cxx:112 AliEmcalPhysicsSelection.cxx:113 AliEmcalPhysicsSelection.cxx:114 AliEmcalPhysicsSelection.cxx:115 AliEmcalPhysicsSelection.cxx:116 AliEmcalPhysicsSelection.cxx:117 AliEmcalPhysicsSelection.cxx:118 AliEmcalPhysicsSelection.cxx:119 AliEmcalPhysicsSelection.cxx:120 AliEmcalPhysicsSelection.cxx:121 AliEmcalPhysicsSelection.cxx:122 AliEmcalPhysicsSelection.cxx:123 AliEmcalPhysicsSelection.cxx:124 AliEmcalPhysicsSelection.cxx:125 AliEmcalPhysicsSelection.cxx:126 AliEmcalPhysicsSelection.cxx:127 AliEmcalPhysicsSelection.cxx:128 AliEmcalPhysicsSelection.cxx:129 AliEmcalPhysicsSelection.cxx:130 AliEmcalPhysicsSelection.cxx:131 AliEmcalPhysicsSelection.cxx:132 AliEmcalPhysicsSelection.cxx:133 AliEmcalPhysicsSelection.cxx:134 AliEmcalPhysicsSelection.cxx:135 AliEmcalPhysicsSelection.cxx:136 AliEmcalPhysicsSelection.cxx:137 AliEmcalPhysicsSelection.cxx:138 AliEmcalPhysicsSelection.cxx:139 AliEmcalPhysicsSelection.cxx:140 AliEmcalPhysicsSelection.cxx:141 AliEmcalPhysicsSelection.cxx:142 AliEmcalPhysicsSelection.cxx:143 AliEmcalPhysicsSelection.cxx:144 AliEmcalPhysicsSelection.cxx:145 AliEmcalPhysicsSelection.cxx:146 AliEmcalPhysicsSelection.cxx:147 AliEmcalPhysicsSelection.cxx:148 AliEmcalPhysicsSelection.cxx:149 AliEmcalPhysicsSelection.cxx:150 AliEmcalPhysicsSelection.cxx:151 AliEmcalPhysicsSelection.cxx:152 AliEmcalPhysicsSelection.cxx:153 AliEmcalPhysicsSelection.cxx:154 AliEmcalPhysicsSelection.cxx:155 AliEmcalPhysicsSelection.cxx:156 AliEmcalPhysicsSelection.cxx:157 AliEmcalPhysicsSelection.cxx:158 AliEmcalPhysicsSelection.cxx:159 AliEmcalPhysicsSelection.cxx:160 AliEmcalPhysicsSelection.cxx:161 AliEmcalPhysicsSelection.cxx:162 AliEmcalPhysicsSelection.cxx:163 AliEmcalPhysicsSelection.cxx:164 AliEmcalPhysicsSelection.cxx:165 AliEmcalPhysicsSelection.cxx:166 AliEmcalPhysicsSelection.cxx:167 AliEmcalPhysicsSelection.cxx:168 AliEmcalPhysicsSelection.cxx:169 AliEmcalPhysicsSelection.cxx:170 AliEmcalPhysicsSelection.cxx:171 AliEmcalPhysicsSelection.cxx:172 AliEmcalPhysicsSelection.cxx:173 AliEmcalPhysicsSelection.cxx:174 AliEmcalPhysicsSelection.cxx:175 AliEmcalPhysicsSelection.cxx:176 AliEmcalPhysicsSelection.cxx:177 AliEmcalPhysicsSelection.cxx:178 AliEmcalPhysicsSelection.cxx:179 AliEmcalPhysicsSelection.cxx:180 AliEmcalPhysicsSelection.cxx:181 AliEmcalPhysicsSelection.cxx:182 AliEmcalPhysicsSelection.cxx:183 AliEmcalPhysicsSelection.cxx:184 AliEmcalPhysicsSelection.cxx:185 AliEmcalPhysicsSelection.cxx:186 AliEmcalPhysicsSelection.cxx:187 AliEmcalPhysicsSelection.cxx:188 AliEmcalPhysicsSelection.cxx:189 AliEmcalPhysicsSelection.cxx:190 AliEmcalPhysicsSelection.cxx:191 AliEmcalPhysicsSelection.cxx:192 AliEmcalPhysicsSelection.cxx:193 AliEmcalPhysicsSelection.cxx:194 AliEmcalPhysicsSelection.cxx:195 AliEmcalPhysicsSelection.cxx:196 AliEmcalPhysicsSelection.cxx:197 AliEmcalPhysicsSelection.cxx:198 AliEmcalPhysicsSelection.cxx:199 AliEmcalPhysicsSelection.cxx:200 AliEmcalPhysicsSelection.cxx:201 AliEmcalPhysicsSelection.cxx:202 AliEmcalPhysicsSelection.cxx:203 AliEmcalPhysicsSelection.cxx:204 AliEmcalPhysicsSelection.cxx:205 AliEmcalPhysicsSelection.cxx:206 AliEmcalPhysicsSelection.cxx:207 AliEmcalPhysicsSelection.cxx:208 AliEmcalPhysicsSelection.cxx:209 AliEmcalPhysicsSelection.cxx:210 AliEmcalPhysicsSelection.cxx:211 AliEmcalPhysicsSelection.cxx:212 AliEmcalPhysicsSelection.cxx:213 AliEmcalPhysicsSelection.cxx:214 AliEmcalPhysicsSelection.cxx:215 AliEmcalPhysicsSelection.cxx:216 AliEmcalPhysicsSelection.cxx:217 AliEmcalPhysicsSelection.cxx:218 AliEmcalPhysicsSelection.cxx:219 AliEmcalPhysicsSelection.cxx:220 AliEmcalPhysicsSelection.cxx:221 AliEmcalPhysicsSelection.cxx:222 AliEmcalPhysicsSelection.cxx:223 AliEmcalPhysicsSelection.cxx:224 AliEmcalPhysicsSelection.cxx:225 AliEmcalPhysicsSelection.cxx:226 AliEmcalPhysicsSelection.cxx:227 AliEmcalPhysicsSelection.cxx:228 AliEmcalPhysicsSelection.cxx:229 AliEmcalPhysicsSelection.cxx:230 AliEmcalPhysicsSelection.cxx:231 AliEmcalPhysicsSelection.cxx:232 AliEmcalPhysicsSelection.cxx:233 AliEmcalPhysicsSelection.cxx:234 AliEmcalPhysicsSelection.cxx:235 AliEmcalPhysicsSelection.cxx:236 AliEmcalPhysicsSelection.cxx:237 AliEmcalPhysicsSelection.cxx:238 AliEmcalPhysicsSelection.cxx:239 AliEmcalPhysicsSelection.cxx:240 AliEmcalPhysicsSelection.cxx:241 AliEmcalPhysicsSelection.cxx:242 AliEmcalPhysicsSelection.cxx:243 AliEmcalPhysicsSelection.cxx:244 AliEmcalPhysicsSelection.cxx:245 AliEmcalPhysicsSelection.cxx:246 AliEmcalPhysicsSelection.cxx:247 AliEmcalPhysicsSelection.cxx:248 AliEmcalPhysicsSelection.cxx:249 AliEmcalPhysicsSelection.cxx:250 AliEmcalPhysicsSelection.cxx:251 AliEmcalPhysicsSelection.cxx:252 AliEmcalPhysicsSelection.cxx:253 AliEmcalPhysicsSelection.cxx:254 AliEmcalPhysicsSelection.cxx:255 AliEmcalPhysicsSelection.cxx:256 AliEmcalPhysicsSelection.cxx:257 AliEmcalPhysicsSelection.cxx:258 AliEmcalPhysicsSelection.cxx:259 AliEmcalPhysicsSelection.cxx:260 AliEmcalPhysicsSelection.cxx:261 AliEmcalPhysicsSelection.cxx:262 AliEmcalPhysicsSelection.cxx:263 AliEmcalPhysicsSelection.cxx:264 AliEmcalPhysicsSelection.cxx:265 AliEmcalPhysicsSelection.cxx:266 AliEmcalPhysicsSelection.cxx:267 AliEmcalPhysicsSelection.cxx:268 AliEmcalPhysicsSelection.cxx:269 AliEmcalPhysicsSelection.cxx:270 AliEmcalPhysicsSelection.cxx:271 AliEmcalPhysicsSelection.cxx:272 AliEmcalPhysicsSelection.cxx:273 AliEmcalPhysicsSelection.cxx:274 AliEmcalPhysicsSelection.cxx:275 AliEmcalPhysicsSelection.cxx:276 AliEmcalPhysicsSelection.cxx:277 AliEmcalPhysicsSelection.cxx:278 AliEmcalPhysicsSelection.cxx:279 AliEmcalPhysicsSelection.cxx:280 AliEmcalPhysicsSelection.cxx:281 AliEmcalPhysicsSelection.cxx:282 AliEmcalPhysicsSelection.cxx:283 AliEmcalPhysicsSelection.cxx:284 AliEmcalPhysicsSelection.cxx:285 AliEmcalPhysicsSelection.cxx:286 AliEmcalPhysicsSelection.cxx:287 AliEmcalPhysicsSelection.cxx:288 AliEmcalPhysicsSelection.cxx:289 AliEmcalPhysicsSelection.cxx:290 AliEmcalPhysicsSelection.cxx:291 AliEmcalPhysicsSelection.cxx:292 AliEmcalPhysicsSelection.cxx:293 AliEmcalPhysicsSelection.cxx:294 AliEmcalPhysicsSelection.cxx:295 AliEmcalPhysicsSelection.cxx:296 AliEmcalPhysicsSelection.cxx:297 AliEmcalPhysicsSelection.cxx:298 AliEmcalPhysicsSelection.cxx:299 AliEmcalPhysicsSelection.cxx:300 AliEmcalPhysicsSelection.cxx:301 AliEmcalPhysicsSelection.cxx:302 AliEmcalPhysicsSelection.cxx:303 AliEmcalPhysicsSelection.cxx:304 AliEmcalPhysicsSelection.cxx:305