]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/FEMTOSCOPY/AliFemto/AliAnalysisTaskFemto.cxx
Fix macro loading condition
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliAnalysisTaskFemto.cxx
index cc9b73eb6a6da321692591fa148dea62afc99710..bb5511c50944eceeb50571eb85ec0ba7cd30fbdf 100644 (file)
@@ -31,7 +31,7 @@ ClassImp(AliAnalysisTaskFemto)
 // 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
@@ -40,7 +40,8 @@ ClassImp(AliAnalysisTaskFemto)
     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
@@ -49,6 +50,31 @@ ClassImp(AliAnalysisTaskFemto)
   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
@@ -60,7 +86,8 @@ AliAnalysisTaskFemto::AliAnalysisTaskFemto(const AliAnalysisTaskFemto& aFemtoTas
     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
@@ -72,6 +99,8 @@ AliAnalysisTaskFemto::AliAnalysisTaskFemto(const AliAnalysisTaskFemto& aFemtoTas
   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
@@ -90,6 +119,9 @@ AliAnalysisTaskFemto& AliAnalysisTaskFemto::operator=(const AliAnalysisTaskFemto
   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
@@ -97,12 +129,13 @@ AliAnalysisTaskFemto& AliAnalysisTaskFemto::operator=(const AliAnalysisTaskFemto
 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
@@ -110,46 +143,59 @@ void AliAnalysisTaskFemto::ConnectInputData(Option_t *) {
 \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
@@ -157,7 +203,10 @@ void AliAnalysisTaskFemto::CreateOutputObjects() {
 //   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
@@ -172,6 +221,8 @@ void AliAnalysisTaskFemto::CreateOutputObjects() {
 \r
     delete tOL;\r
   }\r
+\r
+  PostData(0, fOutputList);\r
 }\r
 \r
 //________________________________________________________________________\r
@@ -180,7 +231,7 @@ void AliAnalysisTaskFemto::Exec(Option_t *) {
 \r
   if (fAnalysisType==1) {\r
     if (!fESD) {\r
-      Printf("ERROR: fESD not available");\r
+      AliWarning("fESD not available");\r
       return;\r
     }\r
 \r
@@ -196,14 +247,14 @@ void AliAnalysisTaskFemto::Exec(Option_t *) {
       \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
@@ -212,19 +263,19 @@ void AliAnalysisTaskFemto::Exec(Option_t *) {
     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
@@ -263,30 +314,30 @@ void AliAnalysisTaskFemto::Exec(Option_t *) {
     // 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
@@ -329,38 +380,38 @@ void AliAnalysisTaskFemto:: FinishTaskOutput() {
 //________________________________________________________________________\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