]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliAnalysisTaskMultiDielectron.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliAnalysisTaskMultiDielectron.cxx
index daa52a24235080902bd2a5a2f2355300290491a5..78943c0d94943e09c2448721413be7aaf94983ef 100644 (file)
@@ -51,6 +51,8 @@ AliAnalysisTaskMultiDielectron::AliAnalysisTaskMultiDielectron() :
   fTriggerMask(AliVEvent::kMB),
   fExcludeTriggerMask(0),
   fTriggerOnV0AND(kFALSE),
+  fFiredTrigger(""),
+  fFiredExclude(kFALSE),
   fRejectPileup(kFALSE),
   fBeamEnergy(-1.),
   fTriggerLogic(kAny),
@@ -73,6 +75,8 @@ AliAnalysisTaskMultiDielectron::AliAnalysisTaskMultiDielectron(const char *name)
   fTriggerMask(AliVEvent::kMB),
   fExcludeTriggerMask(0),
   fTriggerOnV0AND(kFALSE),
+  fFiredTrigger(""),
+  fFiredExclude(kFALSE),
   fRejectPileup(kFALSE),
   fBeamEnergy(-1.),
   fTriggerLogic(kAny),
@@ -107,6 +111,9 @@ AliAnalysisTaskMultiDielectron::~AliAnalysisTaskMultiDielectron()
   fListHistos.SetOwner(kFALSE);
   fListCF.SetOwner(kFALSE);
   
+  // try to reduce memory issues
+  if(fEventStat)       { delete fEventStat;       fEventStat=0; }
+  if(fTriggerAnalysis) { delete fTriggerAnalysis; fTriggerAnalysis=0; }
 }
 //_________________________________________________________________________________
 void AliAnalysisTaskMultiDielectron::UserCreateOutputObjects()
@@ -125,9 +132,10 @@ void AliAnalysisTaskMultiDielectron::UserCreateOutputObjects()
   AliDielectron *die=0;
   while ( (die=static_cast<AliDielectron*>(nextDie())) ){
     die->Init();
-    if (die->GetHistogramList()) fListHistos.Add(const_cast<THashList*>(die->GetHistogramList()));
-    if (die->GetHistogramArray()) fListHistos.Add(const_cast<TObjArray*>(die->GetHistogramArray()));
-    if (die->GetCFManagerPair()) fListCF.Add(const_cast<AliCFContainer*>(die->GetCFManagerPair()->GetContainer()));
+    if (die->GetHistogramList())    fListHistos.Add(const_cast<THashList*>(die->GetHistogramList()));
+    if (die->GetHistogramArray())   fListHistos.Add(const_cast<TObjArray*>(die->GetHistogramArray()));
+    if (die->GetQAHistArray())      fListHistos.Add(const_cast<TObjArray*>(die->GetQAHistArray()));
+    if (die->GetCFManagerPair())    fListCF.Add(const_cast<AliCFContainer*>(die->GetCFManagerPair()->GetContainer()));
   }
 
   Int_t cuts=fListDielectron.GetEntries();
@@ -195,6 +203,9 @@ void AliAnalysisTaskMultiDielectron::UserExec(Option_t *)
       if (fExcludeTriggerMask && (isSelected&fExcludeTriggerMask)) isRejected=kTRUE;
       if (fTriggerLogic==kAny) isSelected&=fTriggerMask;
       else if (fTriggerLogic==kExact) isSelected=((isSelected&fTriggerMask)==fTriggerMask);
+   
+      TString firedTriggerClasses=InputEvent()->GetFiredTriggerClasses();
+      if(!fFiredTrigger.IsNull()) isSelected=(firedTriggerClasses.Contains(fFiredTrigger))^fFiredExclude;
     }
    }
  
@@ -223,24 +234,18 @@ void AliAnalysisTaskMultiDielectron::UserExec(Option_t *)
   //Fill Event histograms before the event filter
   TIter nextDie(&fListDielectron);
   AliDielectron *die=0;
-  Double_t values[AliDielectronVarManager::kNMaxValues]={0};
-  Double_t valuesMC[AliDielectronVarManager::kNMaxValues]={0};
-  AliDielectronVarManager::SetEvent(InputEvent());
-  AliDielectronVarManager::Fill(InputEvent(),values);
-  AliDielectronVarManager::Fill(InputEvent(),valuesMC);
   Bool_t hasMC=AliDielectronMC::Instance()->HasMC();
-  if (hasMC) {
-    if (AliDielectronMC::Instance()->ConnectMCEvent())
-      AliDielectronVarManager::Fill(AliDielectronMC::Instance()->GetMCEvent(),valuesMC);
-  }
-
   while ( (die=static_cast<AliDielectron*>(nextDie())) ){
     AliDielectronHistos *h=die->GetHistoManager();
     if (h){
-      if (h->GetHistogramList()->FindObject("Event_noCuts"))
-        h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,values);
-      if (hasMC && h->GetHistogramList()->FindObject("MCEvent_noCuts"))
-        h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,valuesMC);
+      if (hasMC && AliDielectronMC::Instance()->ConnectMCEvent() && h->GetHistogramList()->FindObject("MCEvent_noCuts")) {
+       AliDielectronVarManager::SetEvent(AliDielectronMC::Instance()->GetMCEvent());
+        h->FillClass("MCEvent_noCuts",AliDielectronVarManager::kNMaxValues,AliDielectronVarManager::GetData());
+      }
+      if (h->GetHistogramList()->FindObject("Event_noCuts")) {
+       AliDielectronVarManager::SetEvent(InputEvent());
+        h->FillClass("Event_noCuts",AliDielectronVarManager::kNMaxValues,AliDielectronVarManager::GetData());
+      }
     }
   }
   nextDie.Reset();
@@ -262,7 +267,7 @@ void AliAnalysisTaskMultiDielectron::UserExec(Option_t *)
   AliKFParticle::SetField( bz );
 
   AliDielectronPID::SetCorrVal((Double_t)InputEvent()->GetRunNumber());
-  //  AliDielectronPair::SetBeamEnergy(InputEvent(), fBeamEnergy);
+  AliDielectronPair::SetBeamEnergy(InputEvent(), fBeamEnergy);
   
   //Process event in all AliDielectron instances
   //   TIter nextDie(&fListDielectron);