// extern AliFemtoManager *ConfigFemtoAnalysis();\r
\r
//________________________________________________________________________\r
- AliAnalysisTaskFemto::AliAnalysisTaskFemto(const char *name, const char *aConfigMacro="ConfigFemtoAnalysis.C"): \r
+AliAnalysisTaskFemto::AliAnalysisTaskFemto(const char *name, const char *aConfigMacro, const char *aConfigParams):\r
AliAnalysisTask(name,""), \r
fESD(0), \r
fAOD(0),\r
fReader(0x0),\r
fManager(0x0),\r
fAnalysisType(0),\r
- fConfigMacro(0)\r
+ fConfigMacro(0),\r
+ fConfigParams(0)\r
{\r
// Constructor.\r
// Input slot #0 works with an Ntuple\r
DefineOutput(0, TList::Class());\r
fConfigMacro = (char *) malloc(sizeof(char) * strlen(aConfigMacro));\r
strcpy(fConfigMacro, aConfigMacro);\r
+ fConfigParams = (char *) malloc(sizeof(char) * strlen(aConfigParams));\r
+ strcpy(fConfigParams, aConfigParams);\r
+}\r
+//________________________________________________________________________\r
+AliAnalysisTaskFemto::AliAnalysisTaskFemto(const char *name, const char *aConfigMacro="ConfigFemtoAnalysis.C"): \r
+ AliAnalysisTask(name,""), \r
+ fESD(0), \r
+ fAOD(0),\r
+ fStack(0),\r
+ fOutputList(0), \r
+ fReader(0x0),\r
+ fManager(0x0),\r
+ fAnalysisType(0),\r
+ fConfigMacro(0),\r
+ fConfigParams(0)\r
+{\r
+ // Constructor.\r
+ // Input slot #0 works with an Ntuple\r
+ DefineInput(0, TChain::Class());\r
+ // Output slot #0 writes into a TH1 container\r
+ DefineOutput(0, TList::Class());\r
+ fConfigMacro = (char *) malloc(sizeof(char) * strlen(aConfigMacro));\r
+ strcpy(fConfigMacro, aConfigMacro);\r
+ fConfigParams = (char *) malloc(sizeof(char) * 2);\r
+ strcpy(fConfigParams, "");\r
}\r
\r
AliAnalysisTaskFemto::AliAnalysisTaskFemto(const AliAnalysisTaskFemto& aFemtoTask):\r
fReader(0x0),\r
fManager(0x0),\r
fAnalysisType(0),\r
- fConfigMacro(0)\r
+ fConfigMacro(0),\r
+ fConfigParams(0)\r
{\r
// copy constructor\r
fESD = aFemtoTask.fESD; \r
fAnalysisType = aFemtoTask.fAnalysisType; \r
fConfigMacro = (char *) malloc(sizeof(char) * strlen(aFemtoTask.fConfigMacro));\r
strcpy(fConfigMacro, aFemtoTask.fConfigMacro);\r
+ fConfigParams = (char *) malloc(sizeof(char) * strlen(aFemtoTask.fConfigParams));\r
+ strcpy(fConfigParams, aFemtoTask.fConfigParams);\r
}\r
\r
\r
if (fConfigMacro) free(fConfigMacro);\r
fConfigMacro = (char *) malloc(sizeof(char) * strlen(aFemtoTask.fConfigMacro));\r
strcpy(fConfigMacro, aFemtoTask.fConfigMacro);\r
+ if (fConfigParams) free(fConfigParams);\r
+ fConfigParams = (char *) malloc(sizeof(char) * strlen(aFemtoTask.fConfigParams));\r
+ strcpy(fConfigParams, aFemtoTask.fConfigParams);\r
\r
return *this;\r
}\r
AliAnalysisTaskFemto::~AliAnalysisTaskFemto() \r
{\r
if (fConfigMacro) free(fConfigMacro);\r
+ if (fConfigParams) free(fConfigParams);\r
}\r
\r
\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::ConnectInputData(Option_t *) {\r
- printf(" ConnectInputData %s\n", GetName());\r
+ AliInfo(Form(" ConnectInputData %s\n", GetName()));\r
\r
fESD = 0;\r
fAOD = 0;\r
\r
TTree* tree = dynamic_cast<TTree*> (GetInputData(0));\r
if (!tree) {\r
- Printf("ERROR: Could not read chain from input slot 0");\r
+ AliWarning("Could not read chain from input slot 0");\r
+ return;\r
} \r
- else {\r
+\r
+ if ((dynamic_cast<AliFemtoEventReaderESDChain *> (fReader)) ||\r
+ (dynamic_cast<AliFemtoEventReaderESDChainKine *> (fReader))) {\r
AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
\r
if(esdH) {\r
- cout << "Selected ESD analysis" << endl;\r
+ AliInfo("Selected ESD analysis");\r
fAnalysisType = 1;\r
\r
- if (!esdH) {\r
- Printf("ERROR: Could not get ESDInputHandler");\r
- } \r
- else {\r
+// if (!esdH) {\r
+// AliWarning("Could not get ESDInputHandler");\r
+// } \r
+// else {\r
fESD = esdH->GetEvent();\r
- }\r
+// }\r
}\r
- else {\r
- AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
- \r
- if (!aodH) {\r
- Printf("ERROR: Could not get AODInputHandler");\r
- } \r
- else {\r
- cout << "Selected AOD analysis" << endl;\r
- fAnalysisType = 2;\r
+ }\r
+ \r
+ if (dynamic_cast<AliFemtoEventReaderAODChain *> (fReader)) {\r
+ AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
+ \r
+ if (!aodH) {\r
+ TObject *handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();\r
+ AliInfo("Has output handler ");\r
+ if( handler && handler->InheritsFrom("AliAODHandler") ) {\r
+ AliInfo("Selected AOD analysis");\r
\r
- fAOD = aodH->GetEvent();\r
+ fAOD = ((AliAODHandler*)handler)->GetAOD();\r
+ fAnalysisType = 2;\r
}\r
- }\r
- if ((!fAOD) && (!fESD)) {\r
- Printf("Wrong analysis type: Only ESD and AOD types are allowed!");\r
+ else {\r
+ AliWarning("Selected AOD reader but no AOD handler found");\r
+ }\r
+ } \r
+ else {\r
+ AliInfo("Selected AOD analysis");\r
+ fAnalysisType = 2;\r
+ \r
+ fAOD = aodH->GetEvent();\r
}\r
}\r
- \r
- \r
+\r
+ if ((!fAOD) && (!fESD)) {\r
+ AliWarning("Wrong analysis type: Only ESD and AOD types are allowed!");\r
+ }\r
}\r
\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::CreateOutputObjects() {\r
- printf("Creating Femto Analysis objects\n");\r
+ AliInfo("Creating Femto Analysis objects\n");\r
\r
gSystem->SetIncludePath("-I$ROOTSYS/include -I./STEERBase/ -I./ESD/ -I./AOD/ -I./ANALYSIS/ -I./ANALYSISalice/ -I./PWG2AOD/AOD -I./PWG2femtoscopy/FEMTOSCOPY/AliFemto -I./PWG2femtoscopyUser/FEMTOSCOPY/AliFemtoUser");\r
- char fcm[2000];\r
+ // char fcm[2000];\r
// sprintf(fcm, "%s++", fConfigMacro);\r
// gROOT->LoadMacro(fcm);\r
gROOT->LoadMacro(fConfigMacro);\r
// fJetFinder = (AliJetFinder*) gInterpreter->ProcessLine("ConfigJetAnalysis()");\r
- SetFemtoManager((AliFemtoManager *) gInterpreter->ProcessLine("ConfigFemtoAnalysis()"));\r
+ if (!fConfigParams)\r
+ SetFemtoManager((AliFemtoManager *) gInterpreter->ProcessLine("ConfigFemtoAnalysis()"));\r
+ else\r
+ SetFemtoManager((AliFemtoManager *) gInterpreter->ProcessLine(Form("ConfigFemtoAnalysis(%s)", fConfigParams)));\r
\r
TList *tOL;\r
fOutputList = fManager->Analysis(0)->GetOutputList();\r
\r
delete tOL;\r
}\r
+\r
+ PostData(0, fOutputList);\r
}\r
\r
//________________________________________________________________________\r
\r
if (fAnalysisType==1) {\r
if (!fESD) {\r
- Printf("ERROR: fESD not available");\r
+ AliWarning("fESD not available");\r
return;\r
}\r
\r
\r
if (hd) {\r
\r
- // printf ("Got MC cocktail event header %p\n", (void *) hd);\r
+ // AliInfo ("Got MC cocktail event header %p\n", (void *) hd);\r
TList *lhd = hd->GetHeaders();\r
- // printf ("Got list of headers %d\n", lhd->GetEntries());\r
+ // AliInfo ("Got list of headers %d\n", lhd->GetEntries());\r
\r
for (int iterh=0; iterh<lhd->GetEntries(); iterh++) \r
{\r
hdh = dynamic_cast<AliGenHijingEventHeader *> (lhd->At(iterh));\r
- // printf ("HIJING header at %i is %p\n", iterh, (void *) hdh);\r
+ // AliInfo ("HIJING header at %i is %p\n", iterh, (void *) hdh);\r
}\r
} \r
}\r
AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
\r
if (!esdH) {\r
- Printf("ERROR: Could not get ESDInputHandler");\r
+ AliWarning("Could not get ESDInputHandler");\r
return;\r
} \r
else {\r
fESD = esdH->GetEvent();\r
}\r
\r
- printf("Tracks in ESD: %d \n",fESD->GetNumberOfTracks());\r
+ AliInfo(Form("Tracks in ESD: %d \n",fESD->GetNumberOfTracks()));\r
\r
if (fESD->GetNumberOfTracks() >= 0) {\r
\r
if (!fReader) {\r
- printf("ERROR: No ESD reader for ESD analysis !\n");\r
+ AliWarning("No ESD reader for ESD analysis !\n");\r
}\r
\r
AliFemtoEventReaderESDChain* fesdc = dynamic_cast<AliFemtoEventReaderESDChain *> (fReader);\r
// Post the output histogram list\r
PostData(0, fOutputList);\r
}\r
- \r
+\r
if (fAnalysisType==2) { \r
if (!fAOD) {\r
- Printf("ERROR: fAOD not available");\r
+ AliWarning("fAOD not available");\r
return;\r
}\r
\r
// Get AOD\r
- AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
+// AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
\r
- if (!aodH) {\r
- Printf("ERROR: Could not get AODInputHandler");\r
- return;\r
- } \r
- else {\r
+// if (!aodH) {\r
+// AliWarning("Could not get AODInputHandler");\r
+// return;\r
+// } \r
+// else {\r
\r
- fAOD = aodH->GetEvent();\r
- }\r
+// fAOD = aodH->GetEvent();\r
+// }\r
\r
- printf("Tracks in AOD: %d \n",fAOD->GetNumberOfTracks());\r
+ AliInfo(Form("Tracks in AOD: %d \n",fAOD->GetNumberOfTracks()));\r
\r
if (fAOD->GetNumberOfTracks() > 0) {\r
if (!fReader) {\r
- printf("ERROR: No AOD reader for AOD analysis! \n");\r
+ AliWarning("No AOD reader for AOD analysis! \n");\r
}\r
else {\r
AliFemtoEventReaderAODChain* faodc = dynamic_cast<AliFemtoEventReaderAODChain *> (fReader);\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::SetFemtoReaderESD(AliFemtoEventReaderESDChain *aReader)\r
{\r
- printf("Selecting Femto reader for ESD\n");\r
+ AliInfo("Selecting Femto reader for ESD\n");\r
fReader = aReader;\r
}\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::SetFemtoReaderESDKine(AliFemtoEventReaderESDChainKine *aReader)\r
{\r
- printf("Selecting Femto reader for ESD with Kinematics information\n");\r
+ AliInfo("Selecting Femto reader for ESD with Kinematics information\n");\r
fReader = aReader;\r
}\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::SetFemtoReaderAOD(AliFemtoEventReaderAODChain *aReader)\r
{\r
- printf("Selecting Femto reader for AOD\n");\r
+ AliInfo("Selecting Femto reader for AOD\n");\r
fReader = aReader;\r
}\r
void AliAnalysisTaskFemto::SetFemtoReaderStandard(AliFemtoEventReaderStandard *aReader)\r
{\r
- printf("Selecting Standard all-purpose Femto reader\n");\r
+ AliInfo("Selecting Standard all-purpose Femto reader\n");\r
fReader = aReader;\r
}\r
//________________________________________________________________________\r
void AliAnalysisTaskFemto::SetFemtoManager(AliFemtoManager *aManager)\r
{\r
fManager = aManager;\r
- printf("Got reader %p\n", (void *) aManager->EventReader());\r
+ AliInfo(Form("Got reader %p\n", (void *) aManager->EventReader()));\r
AliFemtoEventReaderESDChain *tReaderESDChain = dynamic_cast<AliFemtoEventReaderESDChain *> (aManager->EventReader());\r
AliFemtoEventReaderESDChainKine *tReaderESDChainKine = dynamic_cast<AliFemtoEventReaderESDChainKine *> (aManager->EventReader());\r
AliFemtoEventReaderAODChain *tReaderAODChain = dynamic_cast<AliFemtoEventReaderAODChain *> (aManager->EventReader());\r
AliFemtoEventReaderStandard *tReaderStandard = dynamic_cast<AliFemtoEventReaderStandard *> (aManager->EventReader());\r
\r
if ((!tReaderESDChain) && (!tReaderESDChainKine) && (!tReaderAODChain) && (!tReaderStandard)) {\r
- printf("No AliFemto event reader created. Will not run femto analysis.\n");\r
+ AliWarning("No AliFemto event reader created. Will not run femto analysis.\n");\r
return;\r
}\r
if (tReaderESDChain) SetFemtoReaderESD(tReaderESDChain);\r