]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
-now you can fill track and pair variables of mc signals in the histo manager
authorjbook <jbook@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Nov 2012 12:01:39 +0000 (12:01 +0000)
committerjbook <jbook@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Nov 2012 12:01:39 +0000 (12:01 +0000)
PWGDQ/dielectron/AliDielectron.cxx
PWGDQ/dielectron/AliDielectron.h

index a29b99ba74139cb77b32917f74df06549934a484..fdd3404dc8148c7d853483f60ed73abee9605697 100644 (file)
@@ -272,9 +272,9 @@ void AliDielectron::Process(AliVEvent *ev1, AliVEvent *ev2)
 
   // TPC event plane correction
   AliEventplane *cevplane = new AliEventplane();
-  if (ev1 && fPreFilterEventPlane && ( fEventPlanePreFilter.GetCuts()->GetEntries()>0 || fEventPlanePOIPreFilter.GetCuts()->GetEntries()>0)) 
+  if (ev1 && cevplane && fPreFilterEventPlane && ( fEventPlanePreFilter.GetCuts()->GetEntries()>0 || fEventPlanePOIPreFilter.GetCuts()->GetEntries()>0)) 
     EventPlanePreFilter(0, 1, fTracks[0], fTracks[1], ev1, cevplane);
-  
+
   if (!fNoPairing){
     // create pairs and fill pair candidate arrays
     for (Int_t itrackArr1=0; itrackArr1<4; ++itrackArr1){
@@ -300,8 +300,10 @@ void AliDielectron::Process(AliVEvent *ev1, AliVEvent *ev2)
   }
 
   //in case there is a histogram manager, fill the QA histograms
+  if (fHistos) FillMCHistograms(ev1);
   if (fHistos) FillHistograms(ev1);
 
+
   // clear arrays
   if (!fDontClearArrays) ClearArrays();
   AliDielectronVarManager::SetTPCEventPlane(0x0);
@@ -1045,3 +1047,44 @@ void AliDielectron::AddSignalMC(AliDielectronSignalMC* signal) {
   }
   fSignalsMC->Add(signal);
 }
+//________________________________________________________________
+void AliDielectron::FillMCHistograms(const AliVEvent *ev) {
+  //
+  // fill QA MC histograms for pairs and legs of all added mc signals
+  //
+
+  TString className,className2;
+  Double_t values[AliDielectronVarManager::kNMaxValues]={0.};
+  AliDielectronVarManager::Fill(ev, values); // get event informations
+  //loop over all added mc signals
+  for(Int_t isig=0; isig<fSignalsMC->GetEntries(); isig++) {
+
+    className.Form("Pair_%s",fSignalsMC->At(isig)->GetName());
+    className2.Form("Track_Legs_%s",fSignalsMC->At(isig)->GetName());
+    Bool_t pairClass=fHistos->GetHistogramList()->FindObject(className.Data())!=0x0;
+    Bool_t legClass=fHistos->GetHistogramList()->FindObject(className2.Data())!=0x0;
+    if(!pairClass && !legClass) return;
+
+    Int_t ntracks=PairArray(AliDielectron::kEv1PM)->GetEntriesFast(); // only SE +-
+    for (Int_t ipair=0; ipair<ntracks; ++ipair){
+      AliDielectronPair *pair=static_cast<AliDielectronPair*>(PairArray(AliDielectron::kEv1PM)->UncheckedAt(ipair));
+
+      Bool_t isMCtruth = AliDielectronMC::Instance()->IsMCTruth(pair, (AliDielectronSignalMC*)fSignalsMC->At(isig));
+      if(isMCtruth) {
+       //fill pair information
+       if (pairClass){
+         AliDielectronVarManager::Fill(pair, values);
+         fHistos->FillClass(className, AliDielectronVarManager::kNMaxValues, values);
+       }
+       //fill leg information, both + and - in the same histo
+       if (legClass){
+         AliDielectronVarManager::Fill(pair->GetFirstDaughter(),values);
+         fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
+         AliDielectronVarManager::Fill(pair->GetSecondDaughter(),values);
+         fHistos->FillClass(className2, AliDielectronVarManager::kNMaxValues, values);
+       }
+      } //is signal
+    } //loop: pairs
+  } //loop: MCsignals
+
+}
index c78fae02b888bb4e0b5e4a2938cf356b89bd7b8b..829a9ede7bcc71fd48f0e55d8c584519c2fabbb0 100644 (file)
@@ -199,6 +199,7 @@ private:
   void ProcessMC(AliVEvent *ev1);
   
   void  FillHistograms(const AliVEvent *ev, Bool_t pairInfoOnly=kFALSE);
+  void  FillMCHistograms(const AliVEvent *ev);
   void  FillHistogramsMC(const AliMCEvent *ev,  AliVEvent *ev1);
   void  FillHistogramsPair(AliDielectronPair *pair,Bool_t fromPreFilter=kFALSE);
   void  FillHistogramsTracks(TObjArray **tracks);