ROOT logo
/** 
 * @defgroup pwglf_forward_trains_util Utilities for Train setups
 *
 * @ingroup pwglf_forward_trains
 */
/**
 * @file   OutputUtilities.C
 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
 * @date   Tue Oct 16 17:55:32 2012
 * 
 * @brief  Special output handling
 * 
 * @ingroup pwglf_forward_trains_util
 */
#ifndef TREEOUTPUTHELPER_C
#define TREEOUTPUTHELPER_C
#ifndef __CINT__
# include <TString.h>
# include <TError.h>
# include <AliAnalysisManager.h>
# include <AliAnalysisDataContainer.h>
# include <AliVEventHandler.h>
#else
class TString;
#endif

// ===================================================================
/**
 * Special output handling - data sets and remote storage
 *
 * @ingroup pwglf_forward_trains_util
 */
struct OutputUtilities
{
  /** 
   * Register output data set 
   * 
   * @param dsname Data set name 
   * 
   * @return true on success
   */
  static Bool_t RegisterDataset(const TString& dsname)
  {
    // Get the manager
    AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
    
    // If we are asked to make a data-set, get the output handler and
    // common output container.
    AliVEventHandler*         handler = mgr->GetOutputEventHandler();
    if (!handler) return true;

    // Get the container 
    AliAnalysisDataContainer* cont    = mgr->GetCommonOutputContainer();
    if (!cont) { 
      Warning("OutputUtilities::RegisterDataset", 
	      "No common output container defined");
      return false;
    }

    // Make the name 
    TString nme(dsname);
    if (nme.IsNull()) nme = mgr->GetName();
    if (nme.IsNull()) { 
      Error("OutputUtilities::RegisterDataset", "No data set name specified");
      return false;
    }

    // Flag for data-set creation
    cont->SetRegisterDataset(true);

    handler->SetOutputFileName(nme);
    // cont->SetFileName(nme);

    TString base(handler->GetOutputFileName());
    base.ReplaceAll(".root","");
    Info("OutputUtilities::RegisterDataset", 
	 "Will register tree output AODs (%s%s) as dataset",
	 base.Data(), cont->GetTitle());

    return true;
  }
  /** 
   * Get the name of the registered data set
   * 
   * 
   * @return Name of the registered data set
   */
  static TString RegisteredDataset()
  {
    TString ret;

    AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
    AliVEventHandler*   oh  = mgr->GetOutputEventHandler();
    if (!oh) { 
      Warning("OutputUtilities::GetOutputDataSet", 
	      "No outout event handler defined");
      return ret;
    }
    AliAnalysisDataContainer* co  = mgr->GetCommonOutputContainer();
    if (!co) { 
      Warning("OutputUtilities::GetOutputDataSet", 
	      "No common output container defined");
      return ret;
    }
    if (!co->IsRegisterDataset()) { 
      Info("OutputUtilities::GetOutputDataSet", 
	   "Common output is not registered as dataset");
      return ret;
    }
    ret = oh->GetOutputFileName();
    // ret.ReplaceAll("TTree", "");
    ret.ReplaceAll(".root", "");
    // ret.Append(co->GetTitle());

    return ret;
  }
  /** 
   * Register special putput storage 
   * 
   * @param url Url (root://host/full_path)
   * 
   * @return true on success
   */
  static Bool_t RegisterStorage(const TString& url)
  {
    if (url.IsNull()) { 
      Error("OutputUtilities::RegisterStorage", "No storage URI specified");
      return false;
    }

    // Get the manager
    AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
    
    // Get the container 
    AliAnalysisDataContainer* cont    = mgr->GetCommonOutputContainer();
    if (!cont) { 
      Warning("OutputUtilities::RegisterStorage", 
	      "No common output container defined");
      return false;
    }

    cont->SetSpecialOutput();
    mgr->SetSpecialOutputLocation(url);

    return true;
  }
};
#endif
//
// EOF
//
 OutputUtilities.C:1
 OutputUtilities.C:2
 OutputUtilities.C:3
 OutputUtilities.C:4
 OutputUtilities.C:5
 OutputUtilities.C:6
 OutputUtilities.C:7
 OutputUtilities.C:8
 OutputUtilities.C:9
 OutputUtilities.C:10
 OutputUtilities.C:11
 OutputUtilities.C:12
 OutputUtilities.C:13
 OutputUtilities.C:14
 OutputUtilities.C:15
 OutputUtilities.C:16
 OutputUtilities.C:17
 OutputUtilities.C:18
 OutputUtilities.C:19
 OutputUtilities.C:20
 OutputUtilities.C:21
 OutputUtilities.C:22
 OutputUtilities.C:23
 OutputUtilities.C:24
 OutputUtilities.C:25
 OutputUtilities.C:26
 OutputUtilities.C:27
 OutputUtilities.C:28
 OutputUtilities.C:29
 OutputUtilities.C:30
 OutputUtilities.C:31
 OutputUtilities.C:32
 OutputUtilities.C:33
 OutputUtilities.C:34
 OutputUtilities.C:35
 OutputUtilities.C:36
 OutputUtilities.C:37
 OutputUtilities.C:38
 OutputUtilities.C:39
 OutputUtilities.C:40
 OutputUtilities.C:41
 OutputUtilities.C:42
 OutputUtilities.C:43
 OutputUtilities.C:44
 OutputUtilities.C:45
 OutputUtilities.C:46
 OutputUtilities.C:47
 OutputUtilities.C:48
 OutputUtilities.C:49
 OutputUtilities.C:50
 OutputUtilities.C:51
 OutputUtilities.C:52
 OutputUtilities.C:53
 OutputUtilities.C:54
 OutputUtilities.C:55
 OutputUtilities.C:56
 OutputUtilities.C:57
 OutputUtilities.C:58
 OutputUtilities.C:59
 OutputUtilities.C:60
 OutputUtilities.C:61
 OutputUtilities.C:62
 OutputUtilities.C:63
 OutputUtilities.C:64
 OutputUtilities.C:65
 OutputUtilities.C:66
 OutputUtilities.C:67
 OutputUtilities.C:68
 OutputUtilities.C:69
 OutputUtilities.C:70
 OutputUtilities.C:71
 OutputUtilities.C:72
 OutputUtilities.C:73
 OutputUtilities.C:74
 OutputUtilities.C:75
 OutputUtilities.C:76
 OutputUtilities.C:77
 OutputUtilities.C:78
 OutputUtilities.C:79
 OutputUtilities.C:80
 OutputUtilities.C:81
 OutputUtilities.C:82
 OutputUtilities.C:83
 OutputUtilities.C:84
 OutputUtilities.C:85
 OutputUtilities.C:86
 OutputUtilities.C:87
 OutputUtilities.C:88
 OutputUtilities.C:89
 OutputUtilities.C:90
 OutputUtilities.C:91
 OutputUtilities.C:92
 OutputUtilities.C:93
 OutputUtilities.C:94
 OutputUtilities.C:95
 OutputUtilities.C:96
 OutputUtilities.C:97
 OutputUtilities.C:98
 OutputUtilities.C:99
 OutputUtilities.C:100
 OutputUtilities.C:101
 OutputUtilities.C:102
 OutputUtilities.C:103
 OutputUtilities.C:104
 OutputUtilities.C:105
 OutputUtilities.C:106
 OutputUtilities.C:107
 OutputUtilities.C:108
 OutputUtilities.C:109
 OutputUtilities.C:110
 OutputUtilities.C:111
 OutputUtilities.C:112
 OutputUtilities.C:113
 OutputUtilities.C:114
 OutputUtilities.C:115
 OutputUtilities.C:116
 OutputUtilities.C:117
 OutputUtilities.C:118
 OutputUtilities.C:119
 OutputUtilities.C:120
 OutputUtilities.C:121
 OutputUtilities.C:122
 OutputUtilities.C:123
 OutputUtilities.C:124
 OutputUtilities.C:125
 OutputUtilities.C:126
 OutputUtilities.C:127
 OutputUtilities.C:128
 OutputUtilities.C:129
 OutputUtilities.C:130
 OutputUtilities.C:131
 OutputUtilities.C:132
 OutputUtilities.C:133
 OutputUtilities.C:134
 OutputUtilities.C:135
 OutputUtilities.C:136
 OutputUtilities.C:137
 OutputUtilities.C:138
 OutputUtilities.C:139
 OutputUtilities.C:140
 OutputUtilities.C:141
 OutputUtilities.C:142
 OutputUtilities.C:143
 OutputUtilities.C:144
 OutputUtilities.C:145
 OutputUtilities.C:146
 OutputUtilities.C:147
 OutputUtilities.C:148
 OutputUtilities.C:149
 OutputUtilities.C:150
 OutputUtilities.C:151
 OutputUtilities.C:152