]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
patches, patches
authorsnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 13 Nov 2010 18:22:02 +0000 (18:22 +0000)
committersnelling <snelling@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 13 Nov 2010 18:22:02 +0000 (18:22 +0000)
PWG2/FLOW/AliFlowCommon/AliFlowEventSimple.cxx
PWG2/FLOW/AliFlowTasks/AliAnalysisTaskQAflow.cxx
PWG2/FLOW/AliFlowTasks/AliFlowEventCuts.cxx
PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.cxx
PWG2/FLOW/AliFlowTasks/AliFlowTrackCuts.h

index c44b7068d97050215a4a9dfa1dfb8e45565e2d4f..fb010a6c668519963111c574c89c151f412ad893 100644 (file)
@@ -70,7 +70,7 @@ AliFlowEventSimple::AliFlowEventSimple( Int_t n,
                                         Double_t etaMin,
                                         Double_t etaMax):
   fTrackCollection(new TObjArray(n)),
-  fReferenceMultiplicity(n),
+  fReferenceMultiplicity(0),
   fNumberOfTracks(0),
   fNumberOfRPs(0),
   fMCReactionPlaneAngle(0.),
index 5d99356c3c93af48852a88a349ba2420a06b466d..8d162abc293971988e101f78171f6af896ab9e4c 100644 (file)
@@ -81,21 +81,21 @@ void AliAnalysisTaskQAflow::UserCreateOutputObjects()
   //define histograms
 
   TH1* hist;  
-  hist = new TH1I("tracklet_multiplicity","tracklet multiplicity",1000,0,20000);
+  hist = new TH1I("all_tracklet_multiplicity","all tracklets",5000,0,5000);
   before->Add(hist); after->Add(hist->Clone()); //0
-  hist = new TH1I("track_multiplicity", "standard TPC track multiplicity",1000,0,10000);
+  hist = new TH1I("rptrack_multiplicity", "RP selection track multiplicity",5000,0,5000);
   before->Add(hist); after->Add(hist->Clone()); //1
-  hist = new TH1I("refmult","refmult",1000, 0,10000);
+  hist = new TH1I("rprefmult","RP selection refmult",30000, 0,30000);
   before->Add(hist); after->Add(hist->Clone()); //2
-  hist = new TH1I("SPD_clusters","SPD clusters",1000,0,100000);
+  hist = new TH1I("SPD_clusters","SPD clusters",10000,0,10000);
   before->Add(hist); after->Add(hist->Clone()); //3
-  hist = new TH1D("primary_vertexZ","primary vertex z",100,-20,20);
+  hist = new TH1D("primary_vertexZ","primary vertex z",1000,-20,20);
   before->Add(hist); after->Add(hist->Clone()); //4
   hist = new TH1I("ITS_clusters_on_track", "ITS clusters on track", 8, 0, 8);
   before->Add(hist); after->Add(hist->Clone()); //5
   hist = new TH1I("TPC_clusters_on_track", "TPC clusters on track", 159, 1, 160);
   before->Add(hist); after->Add(hist->Clone()); //6
-  hist = new TH1D("TPC_chi2_per_cluster","TPC #chi^{2}/cluster",100,0.0,5.0);
+  hist = new TH1D("TPC_chi2_per_cluster","TPC #chi^{2}/cluster",1000,0.0,5.0);
   before->Add(hist); after->Add(hist->Clone()); //7
   hist = new TH1D("DCA_xy","DCA xy", 1000, -5.0, 5.0 );
   before->Add(hist); after->Add(hist->Clone()); //8
@@ -109,7 +109,7 @@ void AliAnalysisTaskQAflow::UserCreateOutputObjects()
   before->Add(hist); after->Add(hist->Clone()); //12
   hist = new TH1D("eta_tracks","#eta tracks", 1000, -2.0, 2.0 );
   before->Add(hist); after->Add(hist->Clone()); //13
-  hist = new TH1D("TPC_vertex_z", "TPC vertex z", 100,-20.0,20.0);
+  hist = new TH1D("TPC_vertex_z", "TPC vertex z", 1000,-20.0,20.0);
   before->Add(hist); after->Add(hist->Clone()); //14
   hist = new TH1D("ptyield", "p_{t} spectrum", 10000,0.0,10.0);
   before->Add(hist); after->Add(hist->Clone()); //15
@@ -119,6 +119,16 @@ void AliAnalysisTaskQAflow::UserCreateOutputObjects()
   before->Add(hist); after->Add(hist->Clone()); //17
   hist = new TH1D("charges", "charge distribution", 5,-2.5,2.5);
   before->Add(hist); after->Add(hist->Clone()); //18
+  hist = new TH1D("dphivsdeta", "#Delta#phi separation", 10000,-0.1,0.1);
+  before->Add(hist); after->Add(hist->Clone()); //19
+  hist = new TH1I("standardTPC_multiplicity", "standard TPC track multiplicity",10000,0,10000);
+  before->Add(hist); after->Add(hist->Clone()); //20
+  hist = new TH1I("standardV0_multiplicity", "standard V0 multiplicity",30000,0,30000);
+  before->Add(hist); after->Add(hist->Clone()); //21
+  hist = new TH1I("standardSPD1clusters_multiplicity", "standard SPD1 clusters multiplicity",30000,0,30000);
+  before->Add(hist); after->Add(hist->Clone()); //22
+  hist = new TH1I("standardSPDtracklets_multiplicity", "standard SPD tracklets multiplicity",30000,0,30000);
+  before->Add(hist); after->Add(hist->Clone()); //23
   
   //post data here as it doesn't change anyway (the pointer to list anyway)
 
@@ -182,18 +192,26 @@ void AliAnalysisTaskQAflow::UserExec(Option_t *)
   TH1* hptyieldnegA = dynamic_cast<TH1*>(after->At(17));
   TH1* hchargesB = dynamic_cast<TH1*>(before->At(18));
   TH1* hchargesA = dynamic_cast<TH1*>(after->At(18));
+  TH1* hphisepB = dynamic_cast<TH1*>(before->At(19));
+  TH1* hphisepA = dynamic_cast<TH1*>(after->At(19));
+  TH1* hstdtpcmultB = dynamic_cast<TH1*>(before->At(20));
+  TH1* hstdtpcmultA = dynamic_cast<TH1*>(after->At(20));
+  TH1* hstdv0multB = dynamic_cast<TH1*>(before->At(21));
+  TH1* hstdv0multA = dynamic_cast<TH1*>(after->At(21));
+  TH1* hstdspd1clsmultB = dynamic_cast<TH1*>(before->At(22));
+  TH1* hstdspd1clsmultA = dynamic_cast<TH1*>(after->At(22));
+  TH1* hstdspdtrmultB = dynamic_cast<TH1*>(before->At(23));
+  TH1* hstdspdtrmultA = dynamic_cast<TH1*>(after->At(23));
 
   AliMultiplicity* tracklets = const_cast<AliMultiplicity*>(event->GetMultiplicity());
   Int_t ntracklets=0;
   Int_t nspdclusters=0;
-  Int_t nspd1clusters=0;
   Int_t ntrackletsA=0;
   Int_t ntrackletsC=0;
   if (tracklets)
   {
     ntracklets = tracklets->GetNumberOfTracklets();
-    nspdclusters = tracklets->GetNumberOfITSClusters(1);
-    nspd1clusters = tracklets->GetNumberOfITSClusters(1);
+    nspdclusters = tracklets->GetNumberOfITSClusters(0,1);
     for (Int_t i=0; i<tracklets->GetNumberOfTracklets(); i++)
     {
       Bool_t pass=fTrackCuts->IsSelected(tracklets,i);
@@ -205,15 +223,35 @@ void AliAnalysisTaskQAflow::UserExec(Option_t *)
       else ntrackletsA++;
     }
   }
-  //Int_t trackmult = AliESDtrackCuts::GetReferenceMultiplicity(event,kTRUE);
+
   AliFlowEventCuts newcuts;
   newcuts.SetRefMultCuts(fTrackCuts);
+  AliFlowEventCuts stdtpcrefmultcuts;
+  stdtpcrefmultcuts.SetRefMultMethod(AliFlowEventCuts::kTPConly);
+  AliFlowEventCuts stdv0refmultcuts;
+  stdv0refmultcuts.SetRefMultMethod(AliFlowEventCuts::kV0);
+  AliFlowEventCuts stdspd1refmult;
+  stdspd1refmult.SetRefMultMethod(AliFlowEventCuts::kSPD1clusters);
+  AliFlowEventCuts stdspdrefmult;
+  stdspdrefmult.SetRefMultMethod(AliFlowEventCuts::kSPDtracklets);
+
   Int_t trackmult = newcuts.RefMult(event);
   Int_t refmult = fEventCuts->RefMult(event);
+  Int_t refmultv0 = stdv0refmultcuts.RefMult(event);
+  Int_t refmulttpc = stdtpcrefmultcuts.RefMult(event);
+  Int_t refmultspdtr = stdspdrefmult.RefMult(event);
+  Int_t refmultspdcls = stdspd1refmult.RefMult(event);
+
   Bool_t passevent = fEventCuts->IsSelected(event);
+
   htrackletmultB->Fill(ntracklets); if (passevent) htrackletmultA->Fill(ntracklets); 
   htrackmultB->Fill(trackmult); if (passevent) htrackmultA->Fill( trackmult); 
   hrefmultB->Fill(refmult); if (passevent) hrefmultA->Fill( refmult); 
+  hstdv0multB->Fill(refmultv0); if (passevent) hstdv0multA->Fill( refmultv0);
+  hstdtpcmultB->Fill(refmulttpc); if (passevent) hstdtpcmultA->Fill( refmulttpc);
+  hstdspd1clsmultB->Fill(refmultspdcls); if (passevent) hstdspd1clsmultA->Fill( refmultspdcls);
+  hstdspdtrmultB->Fill(refmultspdtr); if (passevent) hstdspdtrmultA->Fill( refmultspdtr);
+
   hspdclustersB->Fill(nspdclusters); if (passevent) hspdclustersA->Fill( nspdclusters);
   const AliVertex* vertex = event->GetPrimaryVertex();
   Float_t vtxz=0.0;
@@ -304,6 +342,18 @@ void AliAnalysisTaskQAflow::UserExec(Option_t *)
       if (charge>0) {hptyieldplusB->Fill(pt); if (pass) hptyieldplusA->Fill(pt);}
       if (charge<0) {hptyieldnegB->Fill(pt); if (pass) hptyieldnegA->Fill(pt);}
       hchargesB->Fill(charge); if (pass) hchargesA->Fill(charge);
+      for (Int_t j=i+1; j<ntracks; j++)
+      {
+        TObject* obj2 = fTrackCuts->GetInputObject(j);
+        if (!obj2) continue;
+        Bool_t pass2 = fTrackCuts->IsSelected(obj2,j);
+        AliESDtrack* track2 = dynamic_cast<AliESDtrack*>(fTrackCuts->GetTrack());
+        if (track2)
+        {
+          Double_t dphi = phi-track2->Phi();
+          hphisepB->Fill(dphi); if (pass&&pass2) hphisepA->Fill(dphi);
+        }
+      }
     }
   }
   if (ntracks!=0) meanpt = meanpt/nselected;
@@ -334,12 +384,16 @@ void AliAnalysisTaskQAflow::UserExec(Option_t *)
     if (!flowevent) flowevent = new AliFlowEvent(fTrackCuts,fTrackCuts);
 
     AliFlowTrackCuts cutspos(*fTrackCuts);
+    cutspos.SetEvent(event);
     cutspos.SetCharge(1);
     AliFlowTrackCuts cutsneg(*fTrackCuts);
+    cutsneg.SetEvent(event);
     cutsneg.SetCharge(-1);
     AliFlowTrackCuts cutssuba(*fTrackCuts);
+    cutssuba.SetEvent(event);
     cutssuba.SetEtaRange(-0.8,-0.1);
     AliFlowTrackCuts cutssubb(*fTrackCuts);
+    cutssubb.SetEvent(event);
     cutssubb.SetEtaRange(0.1,0.8);
     AliFlowEvent evpos(&cutspos,&cutspos);
     AliFlowEvent evneg(&cutsneg,&cutsneg);
index 695880fcbb44995af21f298451f90bb9ef312419..5772078c542a32c9f21afb165e68c833496b63d3 100644 (file)
@@ -275,9 +275,9 @@ Int_t AliFlowEventCuts::RefMult(const AliVEvent* event)
         refmult += TMath::Nint(vzero->GetMTotV0C());
         return refmult;
       case kSPD1clusters:
-        if (!esdevent) return 0;
+        if (!mult) return 0;
         refmult = mult->GetNumberOfITSClusters(1);
-        break;
+        return refmult;
       default:
         return 0;
     }
index ea075d8bbb5cc8e16a28e018823f20585036be38..17466a3d72e569e2c0b2aece1b51b8121d70ad64 100644 (file)
@@ -56,7 +56,7 @@ ClassImp(AliFlowTrackCuts)
 AliFlowTrackCuts::AliFlowTrackCuts():
   AliFlowTrackSimpleCuts(),
   fAliESDtrackCuts(new AliESDtrackCuts()),
-  fQA(kFALSE),
+  fQA(NULL),
   fCutMC(kFALSE),
   fCutMCprocessType(kFALSE),
   fMCprocessType(kPNoProcess),
@@ -95,7 +95,7 @@ AliFlowTrackCuts::AliFlowTrackCuts():
 AliFlowTrackCuts::AliFlowTrackCuts(const AliFlowTrackCuts& that):
   AliFlowTrackSimpleCuts(that),
   fAliESDtrackCuts(new AliESDtrackCuts(*(that.fAliESDtrackCuts))),
-  fQA(that.fQA),
+  fQA(NULL),
   fCutMC(that.fCutMC),
   fCutMCprocessType(that.fCutMCprocessType),
   fMCprocessType(that.fMCprocessType),
@@ -125,7 +125,7 @@ AliFlowTrackCuts::AliFlowTrackCuts(const AliFlowTrackCuts& that):
   fMCevent(NULL),
   fMCparticle(NULL),
   fEvent(NULL),
-  fTPCtrack(that.fTPCtrack)
+  fTPCtrack()
 {
   //copy constructor
 }
@@ -136,7 +136,7 @@ AliFlowTrackCuts& AliFlowTrackCuts::operator=(const AliFlowTrackCuts& that)
   //assignment
   AliFlowTrackSimpleCuts::operator=(that);
   *fAliESDtrackCuts=*(that.fAliESDtrackCuts);
-  fQA=that.fQA;
+  fQA=NULL;
   fCutMC=that.fCutMC;
   fCutMCprocessType=that.fCutMCprocessType;
   fMCprocessType=that.fMCprocessType;
@@ -608,3 +608,16 @@ TObject* AliFlowTrackCuts::GetInputObject(Int_t i)
       return fEvent->GetTrack(i);
   }
 }
+
+//-----------------------------------------------------------------------
+void AliFlowTrackCuts::Clear(Option_t*)
+{
+  //clean up
+  fTrack=NULL;
+  fMCevent=NULL;
+  fMCparticle=NULL;
+  fTrackLabel=0;
+  fTrackWeight=0.0;
+  fTrackEta=0.0;
+  fTrackPhi=0.0;
+}
index 02ba91b23a3aa02dab8b6ce1f5b8789be033b0af..37b8fab62197673fcf484403c7ec35ebd293b092 100644 (file)
@@ -118,10 +118,11 @@ class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
   
   void SetMCevent(AliMCEvent* mcEvent) {fMCevent=mcEvent;}
   AliMCEvent* GetMCevent() const {return fMCevent;}
-  void SetEvent(AliVEvent* event) {fEvent=event;}
+  void SetEvent(AliVEvent* event) {Clear();fEvent=event;}
   AliVEvent* GetEvent() const {return fEvent;}
   Int_t GetNumberOfInputObjects() const;
   TObject* GetInputObject(Int_t i);
+  void Clear(Option_t* option="");
 
  protected:
   Bool_t PassesCuts(AliVParticle* track);
@@ -168,7 +169,7 @@ class AliFlowTrackCuts : public AliFlowTrackSimpleCuts {
   AliVEvent* fEvent;                 //!placeholder for current event
   AliESDtrack fTPCtrack;             //!placeholder for TPC only track to avoid new/delete on every track
 
-  ClassDef(AliFlowTrackCuts,3)
+  ClassDef(AliFlowTrackCuts,4)
 };
 
 #endif