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