ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
/*
 * Group of analysis components with the same event selection
 * Analysis components are initialised via the Initialise function, and executed, if
 * the event is selected, via the function process
 *
 *   Author: Markus Fasel
 */
#include <THashList.h>
#include <TList.h>
#include "AliEMCalTriggerTracksAnalysisComponent.h"
#include "AliEMCalTriggerEventSelection.h"

#include "AliEMCalTriggerTaskGroup.h"

ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup)

namespace EMCalTriggerPtAnalysis {

//______________________________________________________________________________
AliEMCalTriggerTaskGroup::AliEMCalTriggerTaskGroup() :
    TNamed(),
    fAnalysisComponents(NULL),
    fEventSelection(NULL),
    fBinning(NULL),
    fKineCuts(NULL)
{
  /*
   * Dummy constructor, not to be used
   */
}

//______________________________________________________________________________
AliEMCalTriggerTaskGroup::AliEMCalTriggerTaskGroup(const char* name) :
    TNamed(name, ""),
    fAnalysisComponents(NULL),
    fEventSelection(NULL),
    fBinning(NULL),
    fKineCuts(NULL)
{
  /*
   * Main constructor: to be used by the users
   */
  fAnalysisComponents = new TObjArray();
  fAnalysisComponents->SetOwner();
}

//______________________________________________________________________________
AliEMCalTriggerTaskGroup::~AliEMCalTriggerTaskGroup() {
  /*
   * Destructor
   */
  if(fEventSelection) delete fEventSelection;
  if(fAnalysisComponents) delete fAnalysisComponents;
}

//______________________________________________________________________________
TList *AliEMCalTriggerTaskGroup::InitialiseAnalysisComponents() {
  /*
   * Initialise all analysis components. Build a global histlist for the full group
   *
   * @return: the global histogram list
   */
  TIter compIter(fAnalysisComponents);
  AliEMCalTriggerTracksAnalysisComponent *ana(NULL);
  // Build a global histogram list
  TList *histlist = new TList;
  TObject *htmp(NULL);
  while((ana = dynamic_cast<AliEMCalTriggerTracksAnalysisComponent *>(compIter()))){
    ana->SetBinning(fBinning);
    ana->SetKineCuts(fKineCuts);
    ana->CreateHistos();
    TList *ltmp = ana->GetHistList();
    TIter hiter(ltmp);
    while((htmp = hiter())) histlist->Add(htmp);
  }
  return histlist;
}

//______________________________________________________________________________
void AliEMCalTriggerTaskGroup::Process(const AliEMCalTriggerEventData* const event) {
  /*
   * Run analysis of the different groups. Apply event selection if requested;
   *
   * @param event: The combined event data
   */
  if(fEventSelection && !fEventSelection->IsEventSelected(event)) return;
  TIter compIter(fAnalysisComponents);
  AliEMCalTriggerTracksAnalysisComponent *ana(NULL);
  while((ana = dynamic_cast<AliEMCalTriggerTracksAnalysisComponent *>(compIter())))
    ana->Process(event);
}

//______________________________________________________________________________
void AliEMCalTriggerTaskGroup::AddAnalysisComponent(AliEMCalTriggerTracksAnalysisComponent * const analysis) {
  /*
   * Add new analysis component to the task group
   *
   * @param analysis: the analysis component to be added
   */
  fAnalysisComponents->Add(analysis);
}

//______________________________________________________________________________
void EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup::SetTriggerDecision(
    const AliEMCalTriggerAnaTriggerDecision* trigger) {
  /*
   * Forward trigger decision to the analysis components
   *
   * @param trigger: the trigger decision
   */
  AliEMCalTriggerTracksAnalysisComponent *myana(NULL);
  TIter compIter(fAnalysisComponents);
  while((myana = dynamic_cast<AliEMCalTriggerTracksAnalysisComponent *>(compIter())))
    myana->SetTriggerDecision(trigger);
}


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