]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muon/AliAODMuonReplicator.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / muon / AliAODMuonReplicator.h
CommitLineData
26ba01d4 1#ifndef ALIAODMUONREPLICATOR_H
2#define ALIAODMUONREPLICATOR_H
3
8dda6345 4/* Copyright(c) 1998-2013, ALICE Experiment at CERN, All rights reserved. *
26ba01d4 5* See cxx source for full Copyright notice */
6
7// $Id$
8
9
10#ifndef ALIDAODBRANCHREPLICATOR_H
11# include "AliAODBranchReplicator.h"
12#endif
14d6fad5 13#ifndef ROOT_TExMap
14# include "TExMap.h"
15#endif
26ba01d4 16
3d270be0 17//
18// Implementation of a branch replicator
19// to produce slim muon and dimuon aods.
20//
21// Author: L. Aphecetche (Subatech)
22
26ba01d4 23class AliAnalysisCuts;
24class TClonesArray;
14d6fad5 25class AliAODMCHeader;
5393f2c0 26class AliAODVZERO;
3493cd3f 27class AliAODTZERO;
8dda6345 28class AliAODHeader;
29class AliAODTracklets;
30class AliAODZDC;
26ba01d4 31
32class AliAODMuonReplicator : public AliAODBranchReplicator
33{
34public:
14d6fad5 35
26ba01d4 36 AliAODMuonReplicator(const char* name="AliAODMuonReplicator",
37 const char* title="Branch Replicator for muon related branches",
38 AliAnalysisCuts* trackCut=0x0,
14d6fad5 39 AliAnalysisCuts* vertexCut=0x0,
8dda6345 40 Int_t mcMode=0,
41 Bool_t replicateHeader=kFALSE,
42 Bool_t replicateTracklets=kFALSE);
26ba01d4 43 virtual ~AliAODMuonReplicator();
44
45 virtual TList* GetList() const;
46
47 virtual void ReplicateAndFilter(const AliAODEvent& source);
48
14d6fad5 49private:
50 void FilterMC(const AliAODEvent& source);
51 void SelectParticle(Int_t i);
52 Bool_t IsParticleSelected(Int_t i);
53 void CreateLabelMap(const AliAODEvent& source);
54 Int_t GetNewLabel(Int_t i);
55
3d270be0 56private:
26ba01d4 57 AliAnalysisCuts* fTrackCut; // decides which tracks to keep
58 mutable TClonesArray* fTracks; //! internal array of muon tracks
59 AliAnalysisCuts* fVertexCut; // decides which vertices to keep
60 mutable TClonesArray* fVertices; //! internal array of vertices
3d270be0 61 mutable TClonesArray* fDimuons; //! internal array of dimuons
5393f2c0 62 mutable AliAODVZERO* fVZERO; //! internal vzero object
3493cd3f 63 mutable AliAODTZERO* fTZERO; //! internal tzero object
8dda6345 64 mutable AliAODHeader* fHeader; //! internal header object
65 mutable AliAODTracklets* fTracklets; //! internal tracklets object
66 mutable AliAODZDC* fZDC; //! internal zdc object
26ba01d4 67 mutable TList* fList; //! internal list of managed objects (fVertices and fTracks)
68
14d6fad5 69 mutable TClonesArray* fMCParticles; //! internal array of MC particles
70 mutable AliAODMCHeader* fMCHeader; //! internal array of MC header
71 Int_t fMCMode; // MC filtering switch (0=none=no mc information,1=normal=simple copy,>=2=aggressive=filter out)
72 TExMap fLabelMap; //! for MC label remapping (in case of aggressive filtering)
73 TExMap fParticleSelected; //! List of selected MC particles
8dda6345 74 Bool_t fReplicateHeader; //! whether or not the replicate the AOD Header
75 Bool_t fReplicateTracklets; //! whether or not the replicate the AOD Tracklets
76
26ba01d4 77private:
78 AliAODMuonReplicator(const AliAODMuonReplicator&);
79 AliAODMuonReplicator& operator=(const AliAODMuonReplicator&);
80
8dda6345 81 ClassDef(AliAODMuonReplicator,7) // Branch replicator for ESD to muon AOD.
26ba01d4 82};
83
84#endif