]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
option to remove duplicates
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Nov 2012 11:05:37 +0000 (11:05 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Nov 2012 11:05:37 +0000 (11:05 +0000)
PWGCF/Correlations/Base/AliAnalyseLeadingTrackUE.cxx
PWGCF/Correlations/Base/AliUEHist.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.cxx
PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.h

index 6b1e07c3ff6e1f4b2ce5a2bbfaebad422f40dbca..3b39b423dd58231fbc4ed6f47b456c7f389cc846 100644 (file)
@@ -338,7 +338,7 @@ void AliAnalyseLeadingTrackUE::RemoveWeakDecays(TObjArray* tracks, TObject* mcOb
     }
     else if (part->InheritsFrom("AliMCParticle") && mcEvent)
     {
-      if (!(mcEvent->Stack()->IsSecondaryFromWeakDecay(((AliMCParticle*) part)->Label())))
+      if (!(mcEvent->Stack()->IsSecondaryFromWeakDecay(part->GetLabel())))
        continue;
     }
     else
index 73078c5bbf08863f028a4924452502c7d7d5ae2c..6112c7a0856f9018f44a0a304389ec32b0d34105 100644 (file)
@@ -112,13 +112,19 @@ AliUEHist::AliUEHist(const char* reqHist) :
                                                  1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0 };
 
   // pT
-  //iTrackBin[1] = 20;
-  //Double_t pTBins[] = {0.15, 0.2, 0.3, 0.4, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 10.0, 12.0, 15.0};
   iTrackBin[1] = 9;
   Double_t pTBins[] = {0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 8.0 };
   trackBins[1] = pTBins;
   trackAxisTitle[1] = "p_{T} (GeV/c)";
   
+  // pT, fine
+  const Int_t kNpTBinsFine = 22;
+  Double_t pTBinsFine[kNpTBinsFine+1] = {0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 3.75, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0};
+
+  // pT, wide range
+  //const Int_t kNpTBinsWideRange = 20;
+  //Double_t pTBinsWideRange[kNpTBinsWideRange+1] = {0.15, 0.2, 0.3, 0.4, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 10.0, 12.0, 15.0};
+
   // pT,lead binning 1
   const Int_t kNLeadingpTBins = 100;
   Double_t leadingpTBins[kNLeadingpTBins+1];
@@ -127,7 +133,7 @@ AliUEHist::AliUEHist(const char* reqHist) :
   
   // pT,lead binning 2
   //const Int_t kNLeadingpTBins2 = 8;
-  //Double_t leadingpTBins2[] = { 0.5, 1.0, 2.0, 3.0, 4.0, 6.0, 8.0, 10.0, 15.0 };
+//   Double_t leadingpTBins2[] = { 0.5, 1.0, 2.0, 3.0, 4.0, 6.0, 8.0, 10.0, 15.0 };
   const Int_t kNLeadingpTBins2 = 6;
   Double_t leadingpTBins2[] = { 0.5, 1.0, 2.0, 3.0, 4.0, 6.0, 8.0 };
   
@@ -318,13 +324,14 @@ AliUEHist::AliUEHist(const char* reqHist) :
 
   SetStepNames(fEventHist);
   
+  iTrackBin[1] = kNpTBinsFine;
   iTrackBin[2] = kNSpeciesBins;
   iTrackBin[4] = kNVertexBins2;
 
   fTrackHistEfficiency = new AliCFContainer("fTrackHistEfficiency", "Tracking efficiency", 4, 5, iTrackBin);
   fTrackHistEfficiency->SetBinLimits(0, trackBins[0]);
   fTrackHistEfficiency->SetVarTitle(0, trackAxisTitle[0]);
-  fTrackHistEfficiency->SetBinLimits(1, trackBins[1]);
+  fTrackHistEfficiency->SetBinLimits(1, pTBinsFine);
   fTrackHistEfficiency->SetVarTitle(1, trackAxisTitle[1]);
   fTrackHistEfficiency->SetBinLimits(2, speciesBins);
   fTrackHistEfficiency->SetVarTitle(2, "particle species");
index cfa267a2434936e1df02d25db2b0df81a037481a..3d5ded9fa8c19fc3ee5385152c717004d0ebe813 100644 (file)
@@ -131,6 +131,7 @@ fFillOnlyStep0(kFALSE),
 fSkipStep6(kFALSE),
 fRejectCentralityOutliers(kFALSE),
 fRemoveWeakDecays(kFALSE),
+fRemoveDuplicates(kFALSE),
 fFillpT(kFALSE)
 {
   // Default constructor
@@ -357,6 +358,7 @@ void  AliAnalysisTaskPhiCorrelations::AddSettingsTree()
   settingsTree->Branch("fInjectedSignals", &fInjectedSignals,"SkipTrigger/O");
   settingsTree->Branch("fRejectCentralityOutliers", &fRejectCentralityOutliers,"RejectCentralityOutliers/O");
   settingsTree->Branch("fRemoveWeakDecays", &fRemoveWeakDecays,"RemoveWeakDecays/O");
+  settingsTree->Branch("fRemoveDuplicates", &fRemoveDuplicates,"RemoveDuplicates/O");
   
   settingsTree->Fill();
   fListOfHistos->Add(settingsTree);
@@ -600,6 +602,8 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
        fAnalyseUE->RemoveInjectedSignals(tracksRecoMatchedPrim, mc, skipParticlesAbove);
       if (fRemoveWeakDecays)
        fAnalyseUE->RemoveWeakDecays(tracksRecoMatchedPrim, mc);
+      if (fRemoveDuplicates)
+       RemoveDuplicates(tracksRecoMatchedPrim);
       
       // (RECO-matched (quantities from MC particle) primary particles)
       // STEP 4
@@ -622,6 +626,8 @@ void  AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
        fAnalyseUE->RemoveInjectedSignals(tracksRecoMatchedAll, mc, skipParticlesAbove);
       if (fRemoveWeakDecays)
        fAnalyseUE->RemoveWeakDecays(tracksRecoMatchedAll, mc);
+      if (fRemoveDuplicates)
+       RemoveDuplicates(tracksRecoMatchedAll);
      
       // (RECO-matched (quantities from MC particle) all particles)
       // STEP 5
@@ -1030,3 +1036,35 @@ void  AliAnalysisTaskPhiCorrelations::Initialize()
   // MC handler
   fMcHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
 }
+
+//____________________________________________________________________
+void AliAnalysisTaskPhiCorrelations::RemoveDuplicates(TObjArray* tracks)
+{
+  // remove particles with the same label
+  
+  Int_t before = tracks->GetEntriesFast();
+
+  for (Int_t i=0; i<before; ++i) 
+  {
+    AliVParticle* part = (AliVParticle*) tracks->At(i);
+    
+    for (Int_t j=i+1; j<before; ++j) 
+    {
+      AliVParticle* part2 = (AliVParticle*) tracks->At(j);
+      
+      if (part->GetLabel() == part2->GetLabel())
+      {
+       Printf("Removing %d with label %d (duplicated in %d)", i, part->GetLabel(), j); part->Dump(); part2->Dump();
+       TObject* object = tracks->RemoveAt(i);
+       if (tracks->IsOwner())
+         delete object;
+       break;
+      }
+    }
+  }
+  tracks->Compress();
+  
+  if (before > tracks->GetEntriesFast())
+    AliInfo(Form("Reduced from %d to %d", before, tracks->GetEntriesFast())); 
+}
index ff9eb5f3b80fa2869e1f1e1e14ed38cd4ab4c9cd..e09ec37b660ca2d319d3dd597a0028b507fbc91c 100644 (file)
@@ -98,6 +98,7 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     void   SetStepsFillSkip(Bool_t step0, Bool_t step6) { fFillOnlyStep0 = step0; fSkipStep6 = step6; }
     void   SetRejectCentralityOutliers(Bool_t flag = kTRUE) { fRejectCentralityOutliers = flag; }
     void   SetRemoveWeakDecays(Bool_t flag = kTRUE) { fRemoveWeakDecays = flag; }
+    void   SetRemoveDuplicates(Bool_t flag = kTRUE) { fRemoveDuplicates = flag; }
     
   private:
     AliAnalysisTaskPhiCorrelations(const  AliAnalysisTaskPhiCorrelations &det);
@@ -108,6 +109,7 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     void            AnalyseDataMode();                                  // main algorithm to get raw distributions
     void            Initialize();                                      // initialize some common pointer
     TObjArray* CloneAndReduceTrackList(TObjArray* tracks);
+    void RemoveDuplicates(TObjArray* tracks);
 
     // General configuration
     Int_t               fDebug;           //  Debug flag
@@ -166,10 +168,11 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     Bool_t fSkipStep6;            // skip step 6 when filling
     Bool_t fRejectCentralityOutliers;  // enable rejection of outliers in centrality vs no track correlation
     Bool_t fRemoveWeakDecays;     // remove secondaries from weak decays from tracks and particles
+    Bool_t fRemoveDuplicates;      // remove particles with the same label (double reconstruction)
     
     Bool_t fFillpT;                // fill sum pT instead of number density
     
-    ClassDef( AliAnalysisTaskPhiCorrelations, 18); // Analysis task for delta phi correlations
+    ClassDef( AliAnalysisTaskPhiCorrelations, 19); // Analysis task for delta phi correlations
   };
 
 class AliDPhiBasicParticle : public AliVParticle