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.                  *
 **************************************************************************/
/*
 * Analysis component for different trigger patches
 *
 *   Author: Markus Fasel
 */
#include <TClonesArray.h>

#include "AliEmcalTriggerPatchInfo.h"
#include "AliEMCalTriggerBinningComponent.h"
#include "AliEMCalTriggerEventData.h"
#include "AliEMCalTriggerPatchAnalysisComponent.h"

ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerPatchAnalysisComponent)

namespace EMCalTriggerPtAnalysis {

//______________________________________________________________________________
AliEMCalTriggerPatchAnalysisComponent::AliEMCalTriggerPatchAnalysisComponent() :
  AliEMCalTriggerTracksAnalysisComponent()
{
  /*
   * Dummy (I/O) constructor, not to be used
   */
}

//______________________________________________________________________________
AliEMCalTriggerPatchAnalysisComponent::AliEMCalTriggerPatchAnalysisComponent(const char *name) :
  AliEMCalTriggerTracksAnalysisComponent(name)
{
  /*
   * Main constructor, to be used by the users
   */
}

//______________________________________________________________________________
void AliEMCalTriggerPatchAnalysisComponent::CreateHistos() {
  /*
   * Create histograms for the trigger patch analysis
   */
  AliEMCalTriggerTracksAnalysisComponent::CreateHistos();

  AliEMCalTriggerBinningDimension *etabinning = fBinning->GetBinning("eta"),
      *phibinning = fBinning->GetBinning("phi");
  const TAxis *patchenergyaxes[4] = {
    DefineAxis("energy", 100, 0., 100),
    DefineAxis("eta", etabinning),
    DefineAxis("phi", phibinning),
    DefineAxis("isMain", 2, -0.5, 1.5)
  };
  const TAxis *patchampaxes[4] = {
    DefineAxis("amplitude", 10000, 0., 10000.),
    DefineAxis("eta", etabinning),
    DefineAxis("phi",  phibinning),
    DefineAxis("isMain", 2, -0.5, 1.5)
  };

  std::string patchnames[] = {"Level0", "JetHigh", "JetLow", "GammaHigh", "GammaLow"};
  for(std::string * triggerpatch = patchnames; triggerpatch < patchnames + sizeof(patchnames)/sizeof(std::string); ++triggerpatch){
    fHistos->CreateTHnSparse(Form("Energy%s", triggerpatch->c_str()), Form("Patch energy for %s trigger patches", triggerpatch->c_str()), 4, patchenergyaxes, "s");
    fHistos->CreateTHnSparse(Form("EnergyRough%s", triggerpatch->c_str()), Form("Rough patch energy for %s trigger patches", triggerpatch->c_str()), 4, patchenergyaxes, "s");
    fHistos->CreateTHnSparse(Form("Amplitude%s", triggerpatch->c_str()), Form("Patch amplitude for %s trigger patches", triggerpatch->c_str()), 4, patchampaxes, "s");
  }

}

//______________________________________________________________________________
void AliEMCalTriggerPatchAnalysisComponent::Process(const AliEMCalTriggerEventData* const data) {
  /*
   * Run trigger patch analysis
   */
  AliEmcalTriggerPatchInfo *triggerpatch(NULL);
  TIter patchIter(data->GetTriggerPatchContainer());
  while((triggerpatch = dynamic_cast<AliEmcalTriggerPatchInfo *>(patchIter()))){
    double triggerpatchinfo[4] = {triggerpatch->GetPatchE(), triggerpatch->GetEtaGeo(), triggerpatch->GetPhiGeo(), triggerpatch->IsMainTrigger() ? 1. : 0.};
    double triggerpatchinfoamp[4] = {static_cast<double>(triggerpatch->GetADCAmp()), triggerpatch->GetEtaGeo(), triggerpatch->GetPhiGeo(), triggerpatch->IsMainTrigger() ? 1. : 0.};
    double triggerpatchinfoer[4] = {triggerpatch->GetADCAmpGeVRough(), triggerpatch->GetEtaGeo(), triggerpatch->GetPhiGeo(), triggerpatch->IsMainTrigger() ? 1. : 0.};
    if(triggerpatch->IsJetHigh()){
      fHistos->FillTHnSparse("EnergyJetHigh", triggerpatchinfo);
      fHistos->FillTHnSparse("AmplitudeJetHigh", triggerpatchinfoamp);
      fHistos->FillTHnSparse("EnergyRoughJetHigh", triggerpatchinfoer);
    }
    if(triggerpatch->IsJetLow()){
      fHistos->FillTHnSparse("EnergyJetLow", triggerpatchinfo);
      fHistos->FillTHnSparse("AmplitudeJetLow", triggerpatchinfoamp);
      fHistos->FillTHnSparse("EnergyRoughJetLow", triggerpatchinfoer);
    }
    if(triggerpatch->IsGammaHigh()){
      fHistos->FillTHnSparse("EnergyGammaHigh", triggerpatchinfo);
      fHistos->FillTHnSparse("AmplitudeGammaHigh", triggerpatchinfoamp);
      fHistos->FillTHnSparse("EnergyRoughGammaHigh", triggerpatchinfoer);
    }
    if(triggerpatch->IsGammaLow()){
      fHistos->FillTHnSparse("EnergyGammaLow", triggerpatchinfo);
      fHistos->FillTHnSparse("AmplitudeGammaLow", triggerpatchinfoamp);
      fHistos->FillTHnSparse("EnergyRoughGammaLow", triggerpatchinfoer);
    }
    if(triggerpatch->IsLevel0()){
      fHistos->FillTHnSparse("EnergyLevel0", triggerpatchinfo);
      fHistos->FillTHnSparse("AmplitudeLevel0", triggerpatchinfoamp);
      fHistos->FillTHnSparse("EnergyRoughLevel0", triggerpatchinfoer);
    }
  }
}

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