]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
add possiblity to copy mc particles
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Jun 2012 13:30:36 +0000 (13:30 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Jun 2012 13:30:36 +0000 (13:30 +0000)
PWGGA/CaloTasks/AliAnalysisTaskCaloFilter.cxx
PWGGA/CaloTasks/AliAnalysisTaskCaloFilter.h
PWGGA/CaloTasks/macros/AddTaskCaloFilter.C

index e75524923a36f1b73a3b063a3ef6c1de1ac226b7..079b26026381bed0a584aa4eef33b91a95337a5d 100644 (file)
@@ -37,6 +37,7 @@
 #include "AliVCluster.h"
 #include "AliVCaloCells.h"
 #include "AliVEventHandler.h"
+#include "AliAODHandler.h"
 #include "AliAnalysisManager.h"
 #include "AliInputEventHandler.h"
 
@@ -59,6 +60,7 @@ fEMCALRecoUtils(new AliEMCALRecoUtils),
 fLoadEMCALMatrices(kFALSE), //fLoadPHOSMatrices(kFALSE),
 fGeoMatrixSet(kFALSE),
 fConfigName(""),          fFillAODFile(kTRUE), 
+fFillMCParticles(kFALSE),
 fFillTracks(kFALSE),      fFillHybridTracks(kFALSE),
 fFillAllVertices(kFALSE), fFillv0s(kFALSE),  
 fFillVZERO(kFALSE),
@@ -89,6 +91,7 @@ fEMCALRecoUtils(new AliEMCALRecoUtils),
 fLoadEMCALMatrices(kFALSE), //fLoadPHOSMatrices(kFALSE),
 fGeoMatrixSet(kFALSE),
 fConfigName(""),          fFillAODFile(kTRUE),
+fFillMCParticles(kFALSE),
 fFillTracks(kFALSE),      fFillHybridTracks(kFALSE),
 fFillAllVertices(kFALSE), fFillv0s(kFALSE),
 fFillVZERO(kFALSE),
@@ -676,6 +679,21 @@ void AliAnalysisTaskCaloFilter::FillAODHeader()
   
 }
 
+
+//__________________________________________________
+void AliAnalysisTaskCaloFilter::FillAODMCParticles()
+{
+  // Copy MC particles
+  
+  if(!fFillMCParticles) return;
+  
+  TClonesArray* inMCParticles = (TClonesArray*) (fAODEvent  ->FindListObject("mcparticles"));
+  TClonesArray* ouMCParticles = (TClonesArray*) ( AODEvent()->FindListObject("mcparticles"));
+  
+  if( inMCParticles &&  ouMCParticles ) new (ouMCParticles) TClonesArray(*inMCParticles);
+    
+}  
+
 //_____________________________________________
 void AliAnalysisTaskCaloFilter::FillAODTracks()
 {
@@ -943,6 +961,13 @@ void AliAnalysisTaskCaloFilter::UserCreateOutputObjects()
        
   fEMCALGeo =  AliEMCALGeometry::GetInstance(fEMCALGeoName) ;  
   
+  if(fFillMCParticles)
+  {
+    TClonesArray * aodMCParticles = new TClonesArray("AliAODMCParticle",500);
+               aodMCParticles->SetName("mcparticles");
+               ((AliAODHandler*)AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler())->AddBranch("TClonesArray", &aodMCParticles);
+  }
+  
 }  
 
 //____________________________________________________________
@@ -1011,6 +1036,9 @@ void AliAnalysisTaskCaloFilter::UserExec(Option_t */*option*/)
   //
   FillAODCaloTrigger();
   
+  // 
+  FillAODMCParticles();
+  
   //printf("Filtered event, end processing : %s\n",fAODEvent->GetFiredTriggerClasses().Data());
   
 }
index f75055efa81b5199d8615fa32841ee6fa7c3c8b4..2684e59e3a204ad851663e7271e0cea6c5f102e0 100644 (file)
@@ -59,6 +59,8 @@ class AliAnalysisTaskCaloFilter : public AliAnalysisTaskSE
   
   void    FillAODCaloTrigger();
 
+  void    FillAODMCParticles();
+  
   void    FillAODTracks();
 
   void    FillAODv0s();
@@ -87,6 +89,9 @@ class AliAnalysisTaskCaloFilter : public AliAnalysisTaskSE
   void    SwitchOnFillAODFile()                   { fFillAODFile = kTRUE        ; }
   void    SwitchOffFillAODFile()                  { fFillAODFile = kFALSE       ; }
 
+  void    SwitchOnFillMCParticles()               { fFillMCParticles = kTRUE    ; }
+  void    SwitchOffFillMCParticles()              { fFillMCParticles = kFALSE   ; }
+  
   void    SwitchOnFillTracks()                    { fFillTracks  = kTRUE        ; }
   void    SwitchOffFillTracks()                   { fFillTracks  = kFALSE       ; }
   
@@ -162,6 +167,7 @@ private:
   TString             fConfigName;        // Name of analysis configuration file
   
   Bool_t              fFillAODFile;       // Fill the output AOD file with clusters 
+  Bool_t              fFillMCParticles;   // Fill tracks
   Bool_t              fFillTracks;        // Fill tracks
   Bool_t              fFillHybridTracks;  // Fill hybrid tracks
 
@@ -187,7 +193,7 @@ private:
   AliAnalysisTaskCaloFilter(           const AliAnalysisTaskCaloFilter&);
   AliAnalysisTaskCaloFilter& operator=(const AliAnalysisTaskCaloFilter&);
   
-  ClassDef(AliAnalysisTaskCaloFilter, 9); // Analysis task for standard ESD filtering
+  ClassDef(AliAnalysisTaskCaloFilter, 10); // Analysis task for standard ESD filtering
   
 };
 
index a1c122f44c527e74faa7c4475ae96c5677bf3de1..37ea58a5d8c84fc9112c09a44bcb1f8e698ffacd 100644 (file)
@@ -1,5 +1,6 @@
 AliAnalysisTaskCaloFilter * AddTaskCaloFilter(const Bool_t  bias      = kTRUE, 
-                                              const Float_t minE      = 5, 
+                                              const Bool_t  mc        = kFALSE,
+                                              const Float_t minE      = 6, 
                                               const Float_t minN      = 3, 
                                               const Float_t vz        = 10.,
                                               const Int_t   opt       = AliAnalysisTaskCaloFilter::kBoth, //kPHOS, kEMCAL or kBoth
@@ -33,9 +34,24 @@ AliAnalysisTaskCaloFilter * AddTaskCaloFilter(const Bool_t  bias      = kTRUE,
   
   filter->SetVzCut(vz);
   
-  if(bias) // select events with significant signal in EMCAL or TPC or PHOS
+  if(mc)
   {
-    filter->SetEventSelection(1,1,1); // Select events depending on EMCAL, PHOS and tracks criteria
+    filter->SetEventSelection(1,0,0); // Select events depending on EMCAL, PHOS and tracks criteria
+    filter->SwitchOnAcceptAllMBEvent();
+    
+    filter->SwitchOnFillMCParticles();
+    
+    filter->SetEMCALEnergyCut(minE);
+    filter->SetEMCALNcellsCut(minN);
+    
+    filter->SetPHOSEnergyCut(minE);
+    filter->SetPHOSNcellsCut(minN);
+    
+    filter->SetTrackPtCut(minE);
+  }
+  else if(bias) // select events with significant signal in EMCAL or TPC or PHOS
+  {
+    filter->SetEventSelection(1,0,0); // Select events depending on EMCAL, PHOS and tracks criteria
     filter->SwitchOnAcceptAllMBEvent();
     
     filter->SetEMCALEnergyCut(minE);
@@ -69,6 +85,9 @@ AliAnalysisTaskCaloFilter * AddTaskCaloFilter(const Bool_t  bias      = kTRUE,
     printf("--- Select Min Bias events ---\n");
   }
 
+  
+  //    filter->SelectCollisionCandidates(AliVEvent::kAny) ;
+      
   if(correct)   filter->SwitchOnClusterCorrection();
   else          filter->SwitchOffClusterCorrection();