]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/dielectron/AliAnalysisTaskDielectronSE.cxx
Macro for QA Monitoring (Cynthia)
[u/mrichter/AliRoot.git] / PWG3 / dielectron / AliAnalysisTaskDielectronSE.cxx
index 0fef4149978915714e050277ac23eaa97e06fb4a..5723467a2eb87aeb5c1a1978b4c86bde604a4d4f 100644 (file)
@@ -13,6 +13,8 @@
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
 
+/* $Id$ */
+
 ///////////////////////////////////////////////////////////////////////////
 //                                                                       //
 //                        Basic Analysis Task                            //
 ///////////////////////////////////////////////////////////////////////////
 
 #include <TChain.h>
+#include <TH1D.h>
 
 #include <AliCFContainer.h>
 #include <AliVEvent.h>
+#include <AliInputEventHandler.h>
+#include <AliESDInputHandler.h>
+#include <AliAnalysisManager.h>
+#include <AliAODInputHandler.h>
 
 #include "AliDielectron.h"
 #include "AliDielectronHistos.h"
@@ -35,7 +42,10 @@ ClassImp(AliAnalysisTaskDielectronSE)
 //_________________________________________________________________________________
 AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE() :
   AliAnalysisTaskSE(),
-  fDielectron(0)
+  fDielectron(0),
+  fSelectPhysics(kFALSE),
+  fTriggerMask(AliVEvent::kMB),
+  fEventStat(0x0)
 {
   //
   // Constructor
@@ -45,7 +55,10 @@ AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE() :
 //_________________________________________________________________________________
 AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE(const char *name) :
   AliAnalysisTaskSE(name),
-  fDielectron(0)
+  fDielectron(0),
+  fSelectPhysics(kFALSE),
+  fTriggerMask(AliVEvent::kMB),
+  fEventStat(0x0)
 {
   //
   // Constructor
@@ -53,6 +66,7 @@ AliAnalysisTaskDielectronSE::AliAnalysisTaskDielectronSE(const char *name) :
   DefineInput(0,TChain::Class());
   DefineOutput(1, THashList::Class());
   DefineOutput(2, AliCFContainer::Class());
+  DefineOutput(3, TH1D::Class());
 }
 
 //_________________________________________________________________________________
@@ -66,6 +80,21 @@ void AliAnalysisTaskDielectronSE::UserCreateOutputObjects()
     return;
   }
   fDielectron->Init();
+  if (fDielectron->GetHistogramList()){
+    PostData(1, const_cast<THashList*>(fDielectron->GetHistogramList()));
+  }
+  if (fDielectron->GetCFManagerPair()){
+    PostData(2, const_cast<AliCFContainer*>(fDielectron->GetCFManagerPair()->GetContainer()));
+  }
+  
+  if (!fEventStat){
+    fEventStat=new TH1D("hEventStat","Event statistics",5,0,5);
+    fEventStat->GetXaxis()->SetBinLabel(1,"Before Phys. Sel.");
+    fEventStat->GetXaxis()->SetBinLabel(2,"After Phys. Sel.");
+  }
+  
+  PostData(3,fEventStat);
+  
 }
 
 //_________________________________________________________________________________
@@ -77,12 +106,59 @@ void AliAnalysisTaskDielectronSE::UserExec(Option_t *)
 
   if (!fDielectron) return;
   
+  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
+  AliESDInputHandler *esdHandler=0x0;
+  if ( (esdHandler=dynamic_cast<AliESDInputHandler*>(man->GetInputEventHandler())) && esdHandler->GetESDpid() ){
+    AliDielectronVarManager::SetESDpid(esdHandler->GetESDpid());
+  } else {
+    //load esd pid bethe bloch parameters depending on the existance of the MC handler
+    // yes: MC parameters
+    // no:  data parameters
+    
+    //ESD case
+    if (man->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
+      if (!AliDielectronVarManager::GetESDpid()){
+        
+        if (AliDielectronMC::Instance()->HasMC()) {
+          AliDielectronVarManager::InitESDpid();
+        } else {
+          AliDielectronVarManager::InitESDpid(1);
+        }
+      }
+    }
+    //AOD case
+    if (man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
+      if (!AliDielectronVarManager::GetAODpidUtil()){
+        if (AliDielectronMC::Instance()->HasMC()) {
+          AliDielectronVarManager::InitAODpidUtil();
+        } else {
+          AliDielectronVarManager::InitAODpidUtil(1);
+        }
+      }
+    }
+  }
+  // Was event selected ?
+  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
+  UInt_t isSelected = AliVEvent::kAny;
+  if( fSelectPhysics && inputHandler && inputHandler->GetEventSelection() ) {
+    isSelected = inputHandler->IsEventSelected();
+    isSelected&=fTriggerMask;
+  }
+  
+  //Before physics selection
+  fEventStat->Fill(0.);
+  if (isSelected==0) {
+    PostData(3,fEventStat);
+    return;
+  }
+  //after physics selection
+  fEventStat->Fill(1.);
+  
   //bz for AliKF
   Double_t bz = InputEvent()->GetMagneticField();
   AliKFParticle::SetField( bz );
   
   fDielectron->Process(InputEvent());
-  fDielectron->FillHistograms();
 
   if (fDielectron->GetHistogramList()){
     PostData(1, const_cast<THashList*>(fDielectron->GetHistogramList()));
@@ -90,5 +166,6 @@ void AliAnalysisTaskDielectronSE::UserExec(Option_t *)
   if (fDielectron->GetCFManagerPair()){
     PostData(2, const_cast<AliCFContainer*>(fDielectron->GetCFManagerPair()->GetContainer()));
   }
+  PostData(3,fEventStat);
 }