ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2013, 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.                  *
 **************************************************************************/

#include "AliAnalysisTaskAOD2MuonAOD.h"

#include "AliAnalysisManager.h"
#include "AliAnalysisNonMuonTrackCuts.h"
#include "AliAnalysisNonPrimaryVertices.h"
#include "AliAnalysisTaskESDMuonFilter.h"
#include "AliAODEvent.h"
#include "AliAODHandler.h"
#include "AliAODMuonReplicator.h"
#include "AliLog.h"
///
/// \brief AliAnalysisTaskAOD2MuonAOD : a class to convert full AODs to muon ones
///
/// The actual work is done, like for the ESD->muon AOD case, by the
/// AliAODMuonReplicator class. This very class is just steering it.
///

/// \cond CLASSIMP
ClassImp(AliAnalysisTaskAOD2MuonAOD)
/// \endcond

//_____________________________________________________________________________
AliAnalysisTaskAOD2MuonAOD::AliAnalysisTaskAOD2MuonAOD(Int_t mcMode, Bool_t withSPDTracklets)
: AliAnalysisTaskSE("AliAnalysisTaskAOD2MuonAOD"),
fBranchReplicator(new AliAODMuonReplicator("MuonReplicator",
                                           "remove non muon tracks and non primary or pileup vertices",
                                           new AliAnalysisNonMuonTrackCuts,
                                           new AliAnalysisNonPrimaryVertices,
                                           mcMode,
                                           kTRUE,
                                           withSPDTracklets))
{
  /// ctor. For the parameters \see AliAODMuonReplicator::AliAODMuonReplicator
}

//_____________________________________________________________________________
AliAnalysisTaskAOD2MuonAOD::~AliAnalysisTaskAOD2MuonAOD()
{
  /// dtor. Delete our internal worker class
  delete fBranchReplicator;
}

//_____________________________________________________________________________
void AliAnalysisTaskAOD2MuonAOD::UserCreateOutputObjects()
{
  /// Create the output AOD branches, from the list of object
  /// we have in the replicator
  
  TList* list = fBranchReplicator->GetList();
  
  TIter next(list);
  TObject* o;
    
  while ( (o = next()) )
  {
    AddAODBranch(o->ClassName(),list->GetObjectRef(o));
  }  
}

//_____________________________________________________________________________
void AliAnalysisTaskAOD2MuonAOD::UserExec(Option_t*)
{
  /// Main method doing the actual filtering (delegating it to
  /// the muon replicator)
  
  AliAODEvent* event = dynamic_cast<AliAODEvent*>(InputEvent());
  if (!event)
  {
    AliError("Event is not a the AOD type");
    return;
  }

  // not sure why but the fillAOD flag seems to be lost somewhere, so must
  // set it per event.
  AliAODHandler* aodH = static_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler());
  
  aodH->SetFillAOD(kTRUE);
  
  fBranchReplicator->ReplicateAndFilter(*event);
}
 AliAnalysisTaskAOD2MuonAOD.cxx:1
 AliAnalysisTaskAOD2MuonAOD.cxx:2
 AliAnalysisTaskAOD2MuonAOD.cxx:3
 AliAnalysisTaskAOD2MuonAOD.cxx:4
 AliAnalysisTaskAOD2MuonAOD.cxx:5
 AliAnalysisTaskAOD2MuonAOD.cxx:6
 AliAnalysisTaskAOD2MuonAOD.cxx:7
 AliAnalysisTaskAOD2MuonAOD.cxx:8
 AliAnalysisTaskAOD2MuonAOD.cxx:9
 AliAnalysisTaskAOD2MuonAOD.cxx:10
 AliAnalysisTaskAOD2MuonAOD.cxx:11
 AliAnalysisTaskAOD2MuonAOD.cxx:12
 AliAnalysisTaskAOD2MuonAOD.cxx:13
 AliAnalysisTaskAOD2MuonAOD.cxx:14
 AliAnalysisTaskAOD2MuonAOD.cxx:15
 AliAnalysisTaskAOD2MuonAOD.cxx:16
 AliAnalysisTaskAOD2MuonAOD.cxx:17
 AliAnalysisTaskAOD2MuonAOD.cxx:18
 AliAnalysisTaskAOD2MuonAOD.cxx:19
 AliAnalysisTaskAOD2MuonAOD.cxx:20
 AliAnalysisTaskAOD2MuonAOD.cxx:21
 AliAnalysisTaskAOD2MuonAOD.cxx:22
 AliAnalysisTaskAOD2MuonAOD.cxx:23
 AliAnalysisTaskAOD2MuonAOD.cxx:24
 AliAnalysisTaskAOD2MuonAOD.cxx:25
 AliAnalysisTaskAOD2MuonAOD.cxx:26
 AliAnalysisTaskAOD2MuonAOD.cxx:27
 AliAnalysisTaskAOD2MuonAOD.cxx:28
 AliAnalysisTaskAOD2MuonAOD.cxx:29
 AliAnalysisTaskAOD2MuonAOD.cxx:30
 AliAnalysisTaskAOD2MuonAOD.cxx:31
 AliAnalysisTaskAOD2MuonAOD.cxx:32
 AliAnalysisTaskAOD2MuonAOD.cxx:33
 AliAnalysisTaskAOD2MuonAOD.cxx:34
 AliAnalysisTaskAOD2MuonAOD.cxx:35
 AliAnalysisTaskAOD2MuonAOD.cxx:36
 AliAnalysisTaskAOD2MuonAOD.cxx:37
 AliAnalysisTaskAOD2MuonAOD.cxx:38
 AliAnalysisTaskAOD2MuonAOD.cxx:39
 AliAnalysisTaskAOD2MuonAOD.cxx:40
 AliAnalysisTaskAOD2MuonAOD.cxx:41
 AliAnalysisTaskAOD2MuonAOD.cxx:42
 AliAnalysisTaskAOD2MuonAOD.cxx:43
 AliAnalysisTaskAOD2MuonAOD.cxx:44
 AliAnalysisTaskAOD2MuonAOD.cxx:45
 AliAnalysisTaskAOD2MuonAOD.cxx:46
 AliAnalysisTaskAOD2MuonAOD.cxx:47
 AliAnalysisTaskAOD2MuonAOD.cxx:48
 AliAnalysisTaskAOD2MuonAOD.cxx:49
 AliAnalysisTaskAOD2MuonAOD.cxx:50
 AliAnalysisTaskAOD2MuonAOD.cxx:51
 AliAnalysisTaskAOD2MuonAOD.cxx:52
 AliAnalysisTaskAOD2MuonAOD.cxx:53
 AliAnalysisTaskAOD2MuonAOD.cxx:54
 AliAnalysisTaskAOD2MuonAOD.cxx:55
 AliAnalysisTaskAOD2MuonAOD.cxx:56
 AliAnalysisTaskAOD2MuonAOD.cxx:57
 AliAnalysisTaskAOD2MuonAOD.cxx:58
 AliAnalysisTaskAOD2MuonAOD.cxx:59
 AliAnalysisTaskAOD2MuonAOD.cxx:60
 AliAnalysisTaskAOD2MuonAOD.cxx:61
 AliAnalysisTaskAOD2MuonAOD.cxx:62
 AliAnalysisTaskAOD2MuonAOD.cxx:63
 AliAnalysisTaskAOD2MuonAOD.cxx:64
 AliAnalysisTaskAOD2MuonAOD.cxx:65
 AliAnalysisTaskAOD2MuonAOD.cxx:66
 AliAnalysisTaskAOD2MuonAOD.cxx:67
 AliAnalysisTaskAOD2MuonAOD.cxx:68
 AliAnalysisTaskAOD2MuonAOD.cxx:69
 AliAnalysisTaskAOD2MuonAOD.cxx:70
 AliAnalysisTaskAOD2MuonAOD.cxx:71
 AliAnalysisTaskAOD2MuonAOD.cxx:72
 AliAnalysisTaskAOD2MuonAOD.cxx:73
 AliAnalysisTaskAOD2MuonAOD.cxx:74
 AliAnalysisTaskAOD2MuonAOD.cxx:75
 AliAnalysisTaskAOD2MuonAOD.cxx:76
 AliAnalysisTaskAOD2MuonAOD.cxx:77
 AliAnalysisTaskAOD2MuonAOD.cxx:78
 AliAnalysisTaskAOD2MuonAOD.cxx:79
 AliAnalysisTaskAOD2MuonAOD.cxx:80
 AliAnalysisTaskAOD2MuonAOD.cxx:81
 AliAnalysisTaskAOD2MuonAOD.cxx:82
 AliAnalysisTaskAOD2MuonAOD.cxx:83
 AliAnalysisTaskAOD2MuonAOD.cxx:84
 AliAnalysisTaskAOD2MuonAOD.cxx:85
 AliAnalysisTaskAOD2MuonAOD.cxx:86
 AliAnalysisTaskAOD2MuonAOD.cxx:87
 AliAnalysisTaskAOD2MuonAOD.cxx:88
 AliAnalysisTaskAOD2MuonAOD.cxx:89
 AliAnalysisTaskAOD2MuonAOD.cxx:90
 AliAnalysisTaskAOD2MuonAOD.cxx:91
 AliAnalysisTaskAOD2MuonAOD.cxx:92
 AliAnalysisTaskAOD2MuonAOD.cxx:93
 AliAnalysisTaskAOD2MuonAOD.cxx:94
 AliAnalysisTaskAOD2MuonAOD.cxx:95