#include <TChain.h>
#include <TFile.h>
#include <TList.h>
#include "AliAnalysisTaskFilter.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataSlot.h"
#include "AliESDEvent.h"
#include "AliESD.h"
#include "AliVEvent.h"
#include "AliESDHandler.h"
#include "AliInputEventHandler.h"
#include "AliLog.h"
#include "AliESDfriend.h"
#include "AliESDfriendTrack.h"
ClassImp(AliAnalysisTaskFilter)
AliAnalysisTaskFilter::AliAnalysisTaskFilter():
AliAnalysisTask(),
fDebug(0),
fEntry(0),
fInputEvent(0x0),
fInputHandler(0x0),
fOutputESDfriend(0x0),
fTreeEF(0x0),
fInputESDfriend(0x0)
{
}
AliAnalysisTaskFilter::AliAnalysisTaskFilter(const char* name):
AliAnalysisTask(name, "AnalysisTaskFilter"),
fDebug(0),
fEntry(0),
fInputEvent(0x0),
fInputHandler(0x0),
fOutputESDfriend(0x0),
fTreeEF(0x0),
fInputESDfriend(0x0)
{
DefineInput (0, TChain::Class());
DefineOutput(0, TTree::Class());
}
AliAnalysisTaskFilter::AliAnalysisTaskFilter(const AliAnalysisTaskFilter& obj):
AliAnalysisTask(obj),
fDebug(0),
fEntry(0),
fInputEvent(0x0),
fInputHandler(0x0),
fOutputESDfriend(0x0),
fTreeEF(0x0),
fInputESDfriend(0x0)
{
fDebug = obj.fDebug;
fEntry = obj.fEntry;
fInputEvent = obj.fInputEvent;
fInputHandler = obj.fInputHandler;
fOutputESDfriend = obj.fOutputESDfriend;
fTreeEF = obj.fTreeEF;
fInputESDfriend = obj.fInputESDfriend;
}
AliAnalysisTaskFilter& AliAnalysisTaskFilter::operator=(const AliAnalysisTaskFilter& other)
{
if (&other != this) {
AliAnalysisTask::operator=(other);
fDebug = other.fDebug;
fEntry = other.fEntry;
fInputEvent = other.fInputEvent;
fInputHandler = other.fInputHandler;
fOutputESDfriend = other.fOutputESDfriend;
fTreeEF = other.fTreeEF;
fInputESDfriend = other.fInputESDfriend;
}
return *this;
}
void AliAnalysisTaskFilter::ConnectInputData(Option_t* )
{
if (fDebug > 1) printf("AnalysisTaskFilter::ConnectInputData() \n");
fInputHandler = (AliInputEventHandler*)
((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
if (fInputHandler) {
fInputEvent = fInputHandler->GetEvent();
if (fInputEvent){
fInputESDfriend = (AliESDfriend*)(fInputEvent->FindListObject("AliESDfriend"));
if (!fInputESDfriend){
AliError("No friend found");
}
}
else {
AliError("No Input Event found, the friend will remain empty");
}
}
else {
AliError("No Input Event Handler connected") ;
return ;
}
}
void AliAnalysisTaskFilter::CreateOutputObjects()
{
if (fDebug > 1) printf("AnalysisTaskFilter::CreateOutPutData() \n");
AliESDHandler* handler = (AliESDHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
if (handler) {
fTreeEF = handler->GetTree();
}
else {
AliWarning("No AOD Event Handler connected.") ;
}
UserCreateOutputObjects();
}
void AliAnalysisTaskFilter::Exec(Option_t* option)
{
if (fDebug > 1) AliInfo("AliAnalysisTaskFilter::Exec() \n");
if( fInputHandler ) {
fEntry = fInputHandler->GetReadEntry();
}
if ( !((Entry()-1)%100) && fDebug > 0) {
AliInfo(Form("%s ----> Processing event # %lld", CurrentFileName(), Entry()));
}
AliESDHandler* handler = (AliESDHandler*)((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
if (UserSelectESDfriendForCurrentEvent()){
handler->SelectEventForFriends();
fOutputESDfriend = handler->GetESDfriend();
UserExec(option);
if (fOutputESDfriend->GetVZEROfriend() == 0x0){
AliDebug(2,"Copying VZERO friend object");
AliESDVZEROfriend* vZEROfriend = fInputESDfriend->GetVZEROfriend();
fOutputESDfriend->SetVZEROfriend(vZEROfriend);
}
}
else {
AliDebug(2,"The event was not selected");
}
AliAnalysisDataSlot *out0 = GetOutputSlot(0);
if (out0 && out0->IsConnected()) PostData(0, fTreeEF);
}
const char* AliAnalysisTaskFilter::CurrentFileName()
{
if( fInputHandler ){
return fInputHandler->GetTree()->GetCurrentFile()->GetName();
}
else return "";
}
void AliAnalysisTaskFilter::AddFriendTrackAt(AliESDfriendTrack* t, Int_t index)
{
AliESDfriendTrack* currentTrack = (AliESDfriendTrack*)fOutputESDfriend->GetTrack(index);
if(currentTrack){
if (currentTrack->TestSkipBit()){
AliDebug(2,Form("Friend at index %d already there but dummy - the skip bit will be set to FALSE", index));
t->SetSkipBit(kFALSE);
}
else{
AliDebug(2,Form("Friend at index %d already there and not dummy", index));
return;
}
}
else{
AliDebug(2,Form("Track at %d not there yet ",index));
}
AliDebug(2,Form("Adding track at %d",index));
fOutputESDfriend->AddTrackAt(t,index);
return;
}
void AliAnalysisTaskFilter::SkipFriendTrackAt(Int_t index)
{
AliESDfriendTrack* currentTrack = (AliESDfriendTrack*)fOutputESDfriend->GetTrack(index);
if (currentTrack){
AliDebug(2,Form("Track already there (no matter what validity) at %d, keeping it as it is", index));
}
else {
AliDebug(2,Form("Adding NULL track at %d, and setting skip bit to TRUE",index));
AliESDfriendTrack* tNull = new AliESDfriendTrack();
tNull->SetSkipBit(kTRUE);
fOutputESDfriend->AddTrackAt(tNull,index);
}
return;
}
AliAnalysisTaskFilter.cxx:1 AliAnalysisTaskFilter.cxx:2 AliAnalysisTaskFilter.cxx:3 AliAnalysisTaskFilter.cxx:4 AliAnalysisTaskFilter.cxx:5 AliAnalysisTaskFilter.cxx:6 AliAnalysisTaskFilter.cxx:7 AliAnalysisTaskFilter.cxx:8 AliAnalysisTaskFilter.cxx:9 AliAnalysisTaskFilter.cxx:10 AliAnalysisTaskFilter.cxx:11 AliAnalysisTaskFilter.cxx:12 AliAnalysisTaskFilter.cxx:13 AliAnalysisTaskFilter.cxx:14 AliAnalysisTaskFilter.cxx:15 AliAnalysisTaskFilter.cxx:16 AliAnalysisTaskFilter.cxx:17 AliAnalysisTaskFilter.cxx:18 AliAnalysisTaskFilter.cxx:19 AliAnalysisTaskFilter.cxx:20 AliAnalysisTaskFilter.cxx:21 AliAnalysisTaskFilter.cxx:22 AliAnalysisTaskFilter.cxx:23 AliAnalysisTaskFilter.cxx:24 AliAnalysisTaskFilter.cxx:25 AliAnalysisTaskFilter.cxx:26 AliAnalysisTaskFilter.cxx:27 AliAnalysisTaskFilter.cxx:28 AliAnalysisTaskFilter.cxx:29 AliAnalysisTaskFilter.cxx:30 AliAnalysisTaskFilter.cxx:31 AliAnalysisTaskFilter.cxx:32 AliAnalysisTaskFilter.cxx:33 AliAnalysisTaskFilter.cxx:34 AliAnalysisTaskFilter.cxx:35 AliAnalysisTaskFilter.cxx:36 AliAnalysisTaskFilter.cxx:37 AliAnalysisTaskFilter.cxx:38 AliAnalysisTaskFilter.cxx:39 AliAnalysisTaskFilter.cxx:40 AliAnalysisTaskFilter.cxx:41 AliAnalysisTaskFilter.cxx:42 AliAnalysisTaskFilter.cxx:43 AliAnalysisTaskFilter.cxx:44 AliAnalysisTaskFilter.cxx:45 AliAnalysisTaskFilter.cxx:46 AliAnalysisTaskFilter.cxx:47 AliAnalysisTaskFilter.cxx:48 AliAnalysisTaskFilter.cxx:49 AliAnalysisTaskFilter.cxx:50 AliAnalysisTaskFilter.cxx:51 AliAnalysisTaskFilter.cxx:52 AliAnalysisTaskFilter.cxx:53 AliAnalysisTaskFilter.cxx:54 AliAnalysisTaskFilter.cxx:55 AliAnalysisTaskFilter.cxx:56 AliAnalysisTaskFilter.cxx:57 AliAnalysisTaskFilter.cxx:58 AliAnalysisTaskFilter.cxx:59 AliAnalysisTaskFilter.cxx:60 AliAnalysisTaskFilter.cxx:61 AliAnalysisTaskFilter.cxx:62 AliAnalysisTaskFilter.cxx:63 AliAnalysisTaskFilter.cxx:64 AliAnalysisTaskFilter.cxx:65 AliAnalysisTaskFilter.cxx:66 AliAnalysisTaskFilter.cxx:67 AliAnalysisTaskFilter.cxx:68 AliAnalysisTaskFilter.cxx:69 AliAnalysisTaskFilter.cxx:70 AliAnalysisTaskFilter.cxx:71 AliAnalysisTaskFilter.cxx:72 AliAnalysisTaskFilter.cxx:73 AliAnalysisTaskFilter.cxx:74 AliAnalysisTaskFilter.cxx:75 AliAnalysisTaskFilter.cxx:76 AliAnalysisTaskFilter.cxx:77 AliAnalysisTaskFilter.cxx:78 AliAnalysisTaskFilter.cxx:79 AliAnalysisTaskFilter.cxx:80 AliAnalysisTaskFilter.cxx:81 AliAnalysisTaskFilter.cxx:82 AliAnalysisTaskFilter.cxx:83 AliAnalysisTaskFilter.cxx:84 AliAnalysisTaskFilter.cxx:85 AliAnalysisTaskFilter.cxx:86 AliAnalysisTaskFilter.cxx:87 AliAnalysisTaskFilter.cxx:88 AliAnalysisTaskFilter.cxx:89 AliAnalysisTaskFilter.cxx:90 AliAnalysisTaskFilter.cxx:91 AliAnalysisTaskFilter.cxx:92 AliAnalysisTaskFilter.cxx:93 AliAnalysisTaskFilter.cxx:94 AliAnalysisTaskFilter.cxx:95 AliAnalysisTaskFilter.cxx:96 AliAnalysisTaskFilter.cxx:97 AliAnalysisTaskFilter.cxx:98 AliAnalysisTaskFilter.cxx:99 AliAnalysisTaskFilter.cxx:100 AliAnalysisTaskFilter.cxx:101 AliAnalysisTaskFilter.cxx:102 AliAnalysisTaskFilter.cxx:103 AliAnalysisTaskFilter.cxx:104 AliAnalysisTaskFilter.cxx:105 AliAnalysisTaskFilter.cxx:106 AliAnalysisTaskFilter.cxx:107 AliAnalysisTaskFilter.cxx:108 AliAnalysisTaskFilter.cxx:109 AliAnalysisTaskFilter.cxx:110 AliAnalysisTaskFilter.cxx:111 AliAnalysisTaskFilter.cxx:112 AliAnalysisTaskFilter.cxx:113 AliAnalysisTaskFilter.cxx:114 AliAnalysisTaskFilter.cxx:115 AliAnalysisTaskFilter.cxx:116 AliAnalysisTaskFilter.cxx:117 AliAnalysisTaskFilter.cxx:118 AliAnalysisTaskFilter.cxx:119 AliAnalysisTaskFilter.cxx:120 AliAnalysisTaskFilter.cxx:121 AliAnalysisTaskFilter.cxx:122 AliAnalysisTaskFilter.cxx:123 AliAnalysisTaskFilter.cxx:124 AliAnalysisTaskFilter.cxx:125 AliAnalysisTaskFilter.cxx:126 AliAnalysisTaskFilter.cxx:127 AliAnalysisTaskFilter.cxx:128 AliAnalysisTaskFilter.cxx:129 AliAnalysisTaskFilter.cxx:130 AliAnalysisTaskFilter.cxx:131 AliAnalysisTaskFilter.cxx:132 AliAnalysisTaskFilter.cxx:133 AliAnalysisTaskFilter.cxx:134 AliAnalysisTaskFilter.cxx:135 AliAnalysisTaskFilter.cxx:136 AliAnalysisTaskFilter.cxx:137 AliAnalysisTaskFilter.cxx:138 AliAnalysisTaskFilter.cxx:139 AliAnalysisTaskFilter.cxx:140 AliAnalysisTaskFilter.cxx:141 AliAnalysisTaskFilter.cxx:142 AliAnalysisTaskFilter.cxx:143 AliAnalysisTaskFilter.cxx:144 AliAnalysisTaskFilter.cxx:145 AliAnalysisTaskFilter.cxx:146 AliAnalysisTaskFilter.cxx:147 AliAnalysisTaskFilter.cxx:148 AliAnalysisTaskFilter.cxx:149 AliAnalysisTaskFilter.cxx:150 AliAnalysisTaskFilter.cxx:151 AliAnalysisTaskFilter.cxx:152 AliAnalysisTaskFilter.cxx:153 AliAnalysisTaskFilter.cxx:154 AliAnalysisTaskFilter.cxx:155 AliAnalysisTaskFilter.cxx:156 AliAnalysisTaskFilter.cxx:157 AliAnalysisTaskFilter.cxx:158 AliAnalysisTaskFilter.cxx:159 AliAnalysisTaskFilter.cxx:160 AliAnalysisTaskFilter.cxx:161 AliAnalysisTaskFilter.cxx:162 AliAnalysisTaskFilter.cxx:163 AliAnalysisTaskFilter.cxx:164 AliAnalysisTaskFilter.cxx:165 AliAnalysisTaskFilter.cxx:166 AliAnalysisTaskFilter.cxx:167 AliAnalysisTaskFilter.cxx:168 AliAnalysisTaskFilter.cxx:169 AliAnalysisTaskFilter.cxx:170 AliAnalysisTaskFilter.cxx:171 AliAnalysisTaskFilter.cxx:172 AliAnalysisTaskFilter.cxx:173 AliAnalysisTaskFilter.cxx:174 AliAnalysisTaskFilter.cxx:175 AliAnalysisTaskFilter.cxx:176 AliAnalysisTaskFilter.cxx:177 AliAnalysisTaskFilter.cxx:178 AliAnalysisTaskFilter.cxx:179 AliAnalysisTaskFilter.cxx:180 AliAnalysisTaskFilter.cxx:181 AliAnalysisTaskFilter.cxx:182 AliAnalysisTaskFilter.cxx:183 AliAnalysisTaskFilter.cxx:184 AliAnalysisTaskFilter.cxx:185 AliAnalysisTaskFilter.cxx:186 AliAnalysisTaskFilter.cxx:187 AliAnalysisTaskFilter.cxx:188 AliAnalysisTaskFilter.cxx:189 AliAnalysisTaskFilter.cxx:190 AliAnalysisTaskFilter.cxx:191 AliAnalysisTaskFilter.cxx:192 AliAnalysisTaskFilter.cxx:193 AliAnalysisTaskFilter.cxx:194 AliAnalysisTaskFilter.cxx:195 AliAnalysisTaskFilter.cxx:196 AliAnalysisTaskFilter.cxx:197 AliAnalysisTaskFilter.cxx:198 AliAnalysisTaskFilter.cxx:199 AliAnalysisTaskFilter.cxx:200 AliAnalysisTaskFilter.cxx:201 AliAnalysisTaskFilter.cxx:202 AliAnalysisTaskFilter.cxx:203 AliAnalysisTaskFilter.cxx:204 AliAnalysisTaskFilter.cxx:205 AliAnalysisTaskFilter.cxx:206 AliAnalysisTaskFilter.cxx:207 AliAnalysisTaskFilter.cxx:208 AliAnalysisTaskFilter.cxx:209 AliAnalysisTaskFilter.cxx:210 AliAnalysisTaskFilter.cxx:211 AliAnalysisTaskFilter.cxx:212 AliAnalysisTaskFilter.cxx:213 AliAnalysisTaskFilter.cxx:214 AliAnalysisTaskFilter.cxx:215 AliAnalysisTaskFilter.cxx:216 AliAnalysisTaskFilter.cxx:217 AliAnalysisTaskFilter.cxx:218 AliAnalysisTaskFilter.cxx:219 AliAnalysisTaskFilter.cxx:220 AliAnalysisTaskFilter.cxx:221 AliAnalysisTaskFilter.cxx:222 AliAnalysisTaskFilter.cxx:223 AliAnalysisTaskFilter.cxx:224 AliAnalysisTaskFilter.cxx:225 AliAnalysisTaskFilter.cxx:226 AliAnalysisTaskFilter.cxx:227 AliAnalysisTaskFilter.cxx:228 AliAnalysisTaskFilter.cxx:229 AliAnalysisTaskFilter.cxx:230 AliAnalysisTaskFilter.cxx:231 AliAnalysisTaskFilter.cxx:232 AliAnalysisTaskFilter.cxx:233 AliAnalysisTaskFilter.cxx:234 AliAnalysisTaskFilter.cxx:235 AliAnalysisTaskFilter.cxx:236 AliAnalysisTaskFilter.cxx:237 AliAnalysisTaskFilter.cxx:238 AliAnalysisTaskFilter.cxx:239 AliAnalysisTaskFilter.cxx:240 AliAnalysisTaskFilter.cxx:241 AliAnalysisTaskFilter.cxx:242 AliAnalysisTaskFilter.cxx:243 AliAnalysisTaskFilter.cxx:244 AliAnalysisTaskFilter.cxx:245 AliAnalysisTaskFilter.cxx:246 AliAnalysisTaskFilter.cxx:247 AliAnalysisTaskFilter.cxx:248 AliAnalysisTaskFilter.cxx:249 AliAnalysisTaskFilter.cxx:250 AliAnalysisTaskFilter.cxx:251 AliAnalysisTaskFilter.cxx:252 AliAnalysisTaskFilter.cxx:253 AliAnalysisTaskFilter.cxx:254 AliAnalysisTaskFilter.cxx:255 AliAnalysisTaskFilter.cxx:256 AliAnalysisTaskFilter.cxx:257 AliAnalysisTaskFilter.cxx:258 AliAnalysisTaskFilter.cxx:259 AliAnalysisTaskFilter.cxx:260 AliAnalysisTaskFilter.cxx:261 AliAnalysisTaskFilter.cxx:262 AliAnalysisTaskFilter.cxx:263 AliAnalysisTaskFilter.cxx:264 AliAnalysisTaskFilter.cxx:265 AliAnalysisTaskFilter.cxx:266 AliAnalysisTaskFilter.cxx:267 AliAnalysisTaskFilter.cxx:268 AliAnalysisTaskFilter.cxx:269 AliAnalysisTaskFilter.cxx:270 AliAnalysisTaskFilter.cxx:271 AliAnalysisTaskFilter.cxx:272 AliAnalysisTaskFilter.cxx:273 AliAnalysisTaskFilter.cxx:274 AliAnalysisTaskFilter.cxx:275 AliAnalysisTaskFilter.cxx:276 AliAnalysisTaskFilter.cxx:277 AliAnalysisTaskFilter.cxx:278 AliAnalysisTaskFilter.cxx:279