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 simple Monte-Carlo particles. Loops over all particles, selects
 * those which are physical primary, and fills a THnSparse with them.
 *
 *   Author: Markus Fasel
 */
#include <TAxis.h>
#include <TMath.h>

#include "AliMCEvent.h"
#include "AliVParticle.h"
#include "AliVEvent.h"
#include "AliVVertex.h"

#include "AliEMCalTriggerBinningComponent.h"
#include "AliEMCalTriggerEventData.h"
#include "AliEMCalTriggerKineCuts.h"
#include "AliEMCalTriggerEventData.h"
#include "AliEMCalTriggerMCParticleAnalysisComponent.h"


ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerMCParticleAnalysisComponent)

namespace EMCalTriggerPtAnalysis {

//______________________________________________________________________________
AliEMCalTriggerMCParticleAnalysisComponent::AliEMCalTriggerMCParticleAnalysisComponent() :
  AliEMCalTriggerTracksAnalysisComponent()
{
  /*
   * Dummy Constructor for I/O
   */
}

//______________________________________________________________________________
AliEMCalTriggerMCParticleAnalysisComponent::AliEMCalTriggerMCParticleAnalysisComponent(const char* name) :
  AliEMCalTriggerTracksAnalysisComponent(name)
{
  /*
   * Main Constructor, to be called by the users
   */
}

  //______________________________________________________________________________
void AliEMCalTriggerMCParticleAnalysisComponent::CreateHistos() {
  /*
   * Create histograms for the MC truth analysis component
   */

  const AliEMCalTriggerBinningDimension *ptbinning = fBinning->GetBinning("pt"),
      *etabinning = fBinning->GetBinning("eta"),
      *phibinning = fBinning->GetBinning("phi"),
      *vertexbinning = fBinning->GetBinning("zvertex");
  AliEMCalTriggerTracksAnalysisComponent::CreateHistos();
  const TAxis *trackaxes[4] = {
      DefineAxis("pt", ptbinning),
      DefineAxis("eta", etabinning),
      DefineAxis("phi", phibinning),
      DefineAxis("zvertex", vertexbinning)
  };
  fHistos->CreateTHnSparse("hMCtrueParticles", "Particle-based histogram for MC-true particles", 4, trackaxes, "s");
}

//______________________________________________________________________________
void AliEMCalTriggerMCParticleAnalysisComponent::Process(const AliEMCalTriggerEventData* const data) {
  AliMCEvent *mc = data->GetMCEvent();
  if(!mc) return;
  AliVEvent *rec = data->GetRecEvent();
  Double_t values[4];
  for(int itrk = 0; itrk < mc->GetNumberOfTracks(); itrk++){
    AliVParticle *track = mc->GetTrack(itrk);
    if(!track->Charge()) continue;
    if(!mc->IsPhysicalPrimary(itrk)) continue;
    if(!fKineCuts->IsSelected(track)) continue;

    values[0] = TMath::Abs(track->Pt());
    values[1] = track->Eta();
    values[2] = track->Phi();
    values[3] = rec->GetPrimaryVertex()->GetZ();
    fHistos->FillTHnSparse("hMCtrueParticles", values);
  }
}

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