ROOT logo
// $Id$

AliEmcalTriggerMaker* AddTaskEmcalTriggerMakerJSON(const char *configurationString)
{  
  // Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr)
  {
    ::Error("AddTaskEmcalTriggerMaker", "No analysis manager to connect to.");
    return NULL;
  }  
  
  // Check the analysis type using the event handlers connected to the analysis manager.
  //==============================================================================
  AliVEventHandler *evhand = mgr->GetInputEventHandler();
  if (!evhand) {
    ::Error("AddTaskEmcalTriggerMaker", "This task requires an input event handler");
    return NULL;
  }

  // Handle wagon configuration
  // Definition of possible parameters
  AliEMCALConfiguration defaultConfiguration("triggerMakerDefault");
  defaultConfiguration.AddParam("triggersOutName", new AliJSONString("EmcalTriggers"));
  defaultConfiguration.AddParam("triggerSetupOutName", new AliJSONString("EmcalTriggerSetup"));
  defaultConfiguration.AddParam("cellsName", new AliJSONString(""));
  defaultConfiguration.AddParam("triggersName", new AliJSONString(""));
  defaultConfiguration.AddParam("taskName", new AliJSONString("AliEmcalTriggerMaker"));
  defaultConfiguration.AddParam("jetLowA", new AliJSONInt(0));
  defaultConfiguration.AddParam("jetLowB", new AliJSONInt(0));
  defaultConfiguration.AddParam("jetLowC", new AliJSONInt(0));
  defaultConfiguration.AddParam("jetHighA", new AliJSONInt(0));
  defaultConfiguration.AddParam("jetHighB", new AliJSONInt(0));
  defaultConfiguration.AddParam("jetHighC", new AliJSONInt(0));
  defaultConfiguration.AddParam("doQA", new AliJSONBool(kFALSE));
  AliEMCALConfiguration userConfiguration("userConfig");
  userConfiguration.Build(configurationString);
  AliEMCALConfigurationMatcher combinedConfiguration(&userConfiguration, &defaultConfiguration);

  defaultConfiguration.Print();
  userConfiguration.Print();

  TString strTriggersName = (static_cast<AliJSONString *>(combinedConfiguration.GetValue("triggersName")))->GetValue(),
  				   strCellsName = (static_cast<AliJSONString *>(combinedConfiguration.GetValue("cellsName")))->GetValue();

  if(!strTriggersName.Length()) {
    if (evhand->InheritsFrom("AliESDInputHandler")) {
      strTriggersName = "EMCALTrigger";
      ::Info("AddTaskEmcalTriggerMaker", Form( "ESD analysis, triggersName = \"%s\"", strTriggersName.Data() ));
    }
    else {
      strTriggersName = "emcalTrigger";
      ::Info("AddTaskEmcalTriggerMaker", Form( "AOD analysis, triggersName = \"%s\"", strTriggersName.Data() ));
    }
  }

  if(!strCellsName.Length()) {
    if (evhand->InheritsFrom("AliESDInputHandler")) {
      strCellsName = "EMCALCells";
      ::Info("AddTaskEmcalTriggerMaker", Form( "ESD analysis, cellsName = \"%s\"", strCellsName.Data() ));
    }
    else {
      strCellsName = "emcalCells";
      ::Info("AddTaskEmcalTriggerMaker", Form( "AOD analysis, cellsName = \"%s\"", strCellsName.Data() ));
    }
  }

  char *v0Name;
  v0Name = new char[100];
  if (evhand->InheritsFrom("AliESDInputHandler")) {
    strcpy(v0Name,"AliESDVZERO");
    ::Info("AddTaskEmcalTriggerMaker", Form( "ESD analysis, v0Name = \"%s\"", v0Name ));
  }
  else {
    strcpy(v0Name,"AliAODVZERO");
    ::Info("AddTaskEmcalTriggerMaker", Form( "AOD analysis, v0Name = \"%s\"", v0Name ));
  }
 
   //-------------------------------------------------------
  // Init the task and do settings
  //-------------------------------------------------------
  AliJSONBool *doQA = static_cast<AliJSONBool *>(combinedConfiguration.GetValue("doQA"));
  TString taskname = (static_cast<AliJSONString *>(combinedConfiguration.GetValue("taskName")))->GetValue();

  AliEmcalTriggerMaker *eTask = new AliEmcalTriggerMaker(taskname.Data(), doQA->GetValue());
  eTask->SetCaloTriggersName(strTriggersName.Data());
  eTask->SetCaloTriggersOutName((static_cast<AliJSONString *>(combinedConfiguration.GetValue("triggersOutName")))->GetValue());
  eTask->SetCaloTriggerSetupOutName((static_cast<AliJSONString *>(combinedConfiguration.GetValue("triggerSetupOutName")))->GetValue());
  eTask->SetCaloCellsName(strCellsName.Data());
  eTask->SetV0InName(v0Name);
  AliJSONInt *jetLowA = static_cast<AliJSONInt *>(combinedConfiguration.GetValue("jetLowA")),
  				*jetLowB = static_cast<AliJSONInt *>(combinedConfiguration.GetValue("jetLowB")),
  				*jetLowC = static_cast<AliJSONInt *>(combinedConfiguration.GetValue("jetLowC")),
  				*jetHighA = static_cast<AliJSONInt *>(combinedConfiguration.GetValue("jetHighA")),
  				*jetHighB = static_cast<AliJSONInt *>(combinedConfiguration.GetValue("jetHighB")),
  				*jetHighC = static_cast<AliJSONInt *>(combinedConfiguration.GetValue("jetHighC"));
  eTask->SetTriggerThresholdJetLow( jetLowA->GetValue(), jetLowB->GetValue(), jetLowC->GetValue() );
  eTask->SetTriggerThresholdJetHigh( jetHighA->GetValue(), jetHighB->GetValue(), jetHighC->GetValue() );

  //-------------------------------------------------------
  // Final settings, pass to manager and set the containers
  //-------------------------------------------------------
  mgr->AddTask(eTask);

  // Create containers for input/output
  AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer();
  mgr->ConnectInput  (eTask, 0,  cinput1 );

  if(doQA){
    TString commonoutput = mgr->GetCommonFileName();
    commonoutput += ":TriggerQA";
    mgr->ConnectOutput(eTask, 1, mgr->CreateContainer("TriggerQA", TList::Class(), AliAnalysisManager::kOutputContainer, commonoutput.Data()));
  }
  return eTask;
}
 AddTaskEmcalTriggerMakerJSON.C:1
 AddTaskEmcalTriggerMakerJSON.C:2
 AddTaskEmcalTriggerMakerJSON.C:3
 AddTaskEmcalTriggerMakerJSON.C:4
 AddTaskEmcalTriggerMakerJSON.C:5
 AddTaskEmcalTriggerMakerJSON.C:6
 AddTaskEmcalTriggerMakerJSON.C:7
 AddTaskEmcalTriggerMakerJSON.C:8
 AddTaskEmcalTriggerMakerJSON.C:9
 AddTaskEmcalTriggerMakerJSON.C:10
 AddTaskEmcalTriggerMakerJSON.C:11
 AddTaskEmcalTriggerMakerJSON.C:12
 AddTaskEmcalTriggerMakerJSON.C:13
 AddTaskEmcalTriggerMakerJSON.C:14
 AddTaskEmcalTriggerMakerJSON.C:15
 AddTaskEmcalTriggerMakerJSON.C:16
 AddTaskEmcalTriggerMakerJSON.C:17
 AddTaskEmcalTriggerMakerJSON.C:18
 AddTaskEmcalTriggerMakerJSON.C:19
 AddTaskEmcalTriggerMakerJSON.C:20
 AddTaskEmcalTriggerMakerJSON.C:21
 AddTaskEmcalTriggerMakerJSON.C:22
 AddTaskEmcalTriggerMakerJSON.C:23
 AddTaskEmcalTriggerMakerJSON.C:24
 AddTaskEmcalTriggerMakerJSON.C:25
 AddTaskEmcalTriggerMakerJSON.C:26
 AddTaskEmcalTriggerMakerJSON.C:27
 AddTaskEmcalTriggerMakerJSON.C:28
 AddTaskEmcalTriggerMakerJSON.C:29
 AddTaskEmcalTriggerMakerJSON.C:30
 AddTaskEmcalTriggerMakerJSON.C:31
 AddTaskEmcalTriggerMakerJSON.C:32
 AddTaskEmcalTriggerMakerJSON.C:33
 AddTaskEmcalTriggerMakerJSON.C:34
 AddTaskEmcalTriggerMakerJSON.C:35
 AddTaskEmcalTriggerMakerJSON.C:36
 AddTaskEmcalTriggerMakerJSON.C:37
 AddTaskEmcalTriggerMakerJSON.C:38
 AddTaskEmcalTriggerMakerJSON.C:39
 AddTaskEmcalTriggerMakerJSON.C:40
 AddTaskEmcalTriggerMakerJSON.C:41
 AddTaskEmcalTriggerMakerJSON.C:42
 AddTaskEmcalTriggerMakerJSON.C:43
 AddTaskEmcalTriggerMakerJSON.C:44
 AddTaskEmcalTriggerMakerJSON.C:45
 AddTaskEmcalTriggerMakerJSON.C:46
 AddTaskEmcalTriggerMakerJSON.C:47
 AddTaskEmcalTriggerMakerJSON.C:48
 AddTaskEmcalTriggerMakerJSON.C:49
 AddTaskEmcalTriggerMakerJSON.C:50
 AddTaskEmcalTriggerMakerJSON.C:51
 AddTaskEmcalTriggerMakerJSON.C:52
 AddTaskEmcalTriggerMakerJSON.C:53
 AddTaskEmcalTriggerMakerJSON.C:54
 AddTaskEmcalTriggerMakerJSON.C:55
 AddTaskEmcalTriggerMakerJSON.C:56
 AddTaskEmcalTriggerMakerJSON.C:57
 AddTaskEmcalTriggerMakerJSON.C:58
 AddTaskEmcalTriggerMakerJSON.C:59
 AddTaskEmcalTriggerMakerJSON.C:60
 AddTaskEmcalTriggerMakerJSON.C:61
 AddTaskEmcalTriggerMakerJSON.C:62
 AddTaskEmcalTriggerMakerJSON.C:63
 AddTaskEmcalTriggerMakerJSON.C:64
 AddTaskEmcalTriggerMakerJSON.C:65
 AddTaskEmcalTriggerMakerJSON.C:66
 AddTaskEmcalTriggerMakerJSON.C:67
 AddTaskEmcalTriggerMakerJSON.C:68
 AddTaskEmcalTriggerMakerJSON.C:69
 AddTaskEmcalTriggerMakerJSON.C:70
 AddTaskEmcalTriggerMakerJSON.C:71
 AddTaskEmcalTriggerMakerJSON.C:72
 AddTaskEmcalTriggerMakerJSON.C:73
 AddTaskEmcalTriggerMakerJSON.C:74
 AddTaskEmcalTriggerMakerJSON.C:75
 AddTaskEmcalTriggerMakerJSON.C:76
 AddTaskEmcalTriggerMakerJSON.C:77
 AddTaskEmcalTriggerMakerJSON.C:78
 AddTaskEmcalTriggerMakerJSON.C:79
 AddTaskEmcalTriggerMakerJSON.C:80
 AddTaskEmcalTriggerMakerJSON.C:81
 AddTaskEmcalTriggerMakerJSON.C:82
 AddTaskEmcalTriggerMakerJSON.C:83
 AddTaskEmcalTriggerMakerJSON.C:84
 AddTaskEmcalTriggerMakerJSON.C:85
 AddTaskEmcalTriggerMakerJSON.C:86
 AddTaskEmcalTriggerMakerJSON.C:87
 AddTaskEmcalTriggerMakerJSON.C:88
 AddTaskEmcalTriggerMakerJSON.C:89
 AddTaskEmcalTriggerMakerJSON.C:90
 AddTaskEmcalTriggerMakerJSON.C:91
 AddTaskEmcalTriggerMakerJSON.C:92
 AddTaskEmcalTriggerMakerJSON.C:93
 AddTaskEmcalTriggerMakerJSON.C:94
 AddTaskEmcalTriggerMakerJSON.C:95
 AddTaskEmcalTriggerMakerJSON.C:96
 AddTaskEmcalTriggerMakerJSON.C:97
 AddTaskEmcalTriggerMakerJSON.C:98
 AddTaskEmcalTriggerMakerJSON.C:99
 AddTaskEmcalTriggerMakerJSON.C:100
 AddTaskEmcalTriggerMakerJSON.C:101
 AddTaskEmcalTriggerMakerJSON.C:102
 AddTaskEmcalTriggerMakerJSON.C:103
 AddTaskEmcalTriggerMakerJSON.C:104
 AddTaskEmcalTriggerMakerJSON.C:105
 AddTaskEmcalTriggerMakerJSON.C:106
 AddTaskEmcalTriggerMakerJSON.C:107
 AddTaskEmcalTriggerMakerJSON.C:108
 AddTaskEmcalTriggerMakerJSON.C:109
 AddTaskEmcalTriggerMakerJSON.C:110
 AddTaskEmcalTriggerMakerJSON.C:111
 AddTaskEmcalTriggerMakerJSON.C:112
 AddTaskEmcalTriggerMakerJSON.C:113
 AddTaskEmcalTriggerMakerJSON.C:114
 AddTaskEmcalTriggerMakerJSON.C:115
 AddTaskEmcalTriggerMakerJSON.C:116
 AddTaskEmcalTriggerMakerJSON.C:117