]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/Correlations/DPhi/AliAnalysisTaskMinijet.cxx
Update from Sandun
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTaskMinijet.cxx
index f2eb2572246b39f1bcbd558582b65b1a89249c8b..cf99e8dc55b767d19c7ab15a6324e79331db756b 100644 (file)
@@ -105,7 +105,7 @@ AliAnalysisTaskMinijet::AliAnalysisTaskMinijet(const char *name)
     fChargedPi0(0),
     fVertexCheck(0),
     fPropagateDca(0),
-    fCentralityMethod("V0M")
+    fCentralityMethod("")
 {
     
     //Constructor
@@ -171,8 +171,21 @@ void AliAnalysisTaskMinijet::UserCreateOutputObjects()
     // Called once
     if(fDebug) Printf("In User Create Output Objects.");
     
-    Int_t nbinsCentr = 101;
-    Float_t minbinCentr=-0.5, maxbinCentr=100.5;
+    Int_t nbinsCentr = 0;
+    Float_t minbinCentr=0, maxbinCentr=0;
+
+    if (fCentralityMethod.Length() > 0)
+    {
+        nbinsCentr = 105;
+        minbinCentr=0;
+        maxbinCentr=105;
+    }
+    else
+    {
+        nbinsCentr = 101;
+        minbinCentr=-0.5;
+        maxbinCentr=100.5;
+    }
 
     fStep = new TH1F("fStep", "fStep", 10, -0.5, 9.5);
     fEventStat = new TH1F("fEventStat", "fEventStat", 10, -0.5, 9.5);
@@ -526,9 +539,9 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
     
     
     //number of accepted tracks and tracklets
-    Int_t ntracks = 0;  //return value for reading functions for ESD and AOD
+    Double_t ntracks = 0;  //return value for reading functions for ESD and AOD
     //Int_t ntracksRemove = 0;  //return value for reading functions for ESD and AOD
-    vector<Int_t> nTracksTracklets; // [0]=nAccepted,1=ntracklets,2=nall(also neutral in case of mc,
+    vector<Double_t> nTracksTracklets; // [0]=nAccepted,1=ntracklets,2=nall(also neutral in case of mc,
     //for real nall=ncharged)
     
     if(!fAODEvent && !fESDEvent)return;
@@ -631,7 +644,7 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                 else AliInfo("Fatal Error");
                 
                 if (fCentralityMethod.Length() > 0)
-                    ntracks = TMath::Nint(centrality);
+                    ntracks = centrality;
                 
                 // analyse
                 if(pt.size()){ //(internally ntracks=fNRecAccept)
@@ -647,9 +660,12 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                     else if(fAODEvent)ntracks = ReadEventAOD(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 7);
                     else AliInfo("Fatal Error");
                     
+                    if (fCentralityMethod.Length() > 0)
+                        ntracks = centrality;
+                    
                     // analyse
                     if(pt.size()){ //(internally ntracks=fNRecAccept)
-                        Analyse(pt, eta, phi, charge, strangenessWeight, TMath::Nint(fNRecAcceptStrangeCorr), nTracksTracklets[1], nTracksTracklets[2], 7);//step 7 = TrigVtxRecNrecStrangeCorr
+                        Analyse(pt, eta, phi, charge, strangenessWeight, fNRecAcceptStrangeCorr, nTracksTracklets[1], nTracksTracklets[2], 7);//step 7 = TrigVtxRecNrecStrangeCorr
                     }
                 }
                 
@@ -661,6 +677,9 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                     else if(fAODEvent)  ntracks = ReadEventAODRecMcProp(pt, eta, phi, charge,strangenessWeight, nTracksTracklets, 4);
                     else AliInfo("Fatal Error");
                     
+                    if (fCentralityMethod.Length() > 0)
+                        ntracks = centrality;
+                    
                     //analyse
                     if(pt.size()){//(internally ntracks=fNRecAccept)
                         Analyse(pt, eta, phi, charge,strangenessWeight, ntracks, nTracksTracklets[1], nTracksTracklets[2], 4); //step 4 = TrigVtxRecMcPropNrec
@@ -675,9 +694,12 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                         else if(fAODEvent)  ntracks = ReadEventAODRecMcProp(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 6);
                         else AliInfo("Fatal Error");
                         
+                        if (fCentralityMethod.Length() > 0)
+                            ntracks = centrality;
+                        
                         //analyse
                         if(pt.size()){//(internally ntracks=fNRecAccept)
-                            Analyse(pt, eta, phi, charge, strangenessWeight, TMath::Nint(fNRecAcceptStrangeCorr), nTracksTracklets[1], nTracksTracklets[2], 6); //step 6 = TrigVtxRecMcPropNrecStrangeCorr
+                            Analyse(pt, eta, phi, charge, strangenessWeight, fNRecAcceptStrangeCorr, nTracksTracklets[1], nTracksTracklets[2], 6); //step 6 = TrigVtxRecMcPropNrecStrangeCorr
                         }
                     }
                     // step 3 = TrigVtxMcNrec
@@ -687,6 +709,11 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                     else if(fAODEvent)  ntracks = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 3);
                     else AliInfo("Fatal Error");
                     
+                    if (fCentralityMethod.Length() > 0){
+                        fNRecAccept = centrality;
+                        fNMcPrimAccept = centrality;
+                    }
+                    
                     // analyse
                     if(pt.size()){
                         Analyse(pt, eta, phi, charge, strangenessWeight, fNRecAccept,    nTracksTracklets[1],nTracksTracklets[2], 3); //step 3 = TrigVtxMcNrec
@@ -711,6 +738,10 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                 else if(fAODEvent) ntracks  = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 1);//read tracks
                 else AliInfo("Fatal Error");
                 
+                if (fCentralityMethod.Length() > 0)
+                    fNMcPrimAccept = centrality;
+                
+                
                 // analyse
                 if(pt.size()){
                     Analyse(pt, eta, phi, charge, strangenessWeight, fNMcPrimAccept, nTracksTracklets[1],nTracksTracklets[2], 1);  // step 1 = TrigAllMcNmc
@@ -732,6 +763,9 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                 else if(fAODEvent) ntracks  = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 0);
                 else AliInfo("Fatal Error");
                 
+                if (fCentralityMethod.Length() > 0)
+                    fNMcPrimAccept = centrality;
+                
                 //analyse
                 if(pt.size()){
                     Analyse(pt, eta, phi, charge, strangenessWeight, fNMcPrimAccept, nTracksTracklets[1],nTracksTracklets[2], 0);  //second part of step 0 // step 0 = AllAllMcNmc
@@ -745,6 +779,9 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
         if(fMode==0)       ntracks  = ReadEventESDMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 0);
         else if (fMode==1) ntracks  = ReadEventAODMC(pt, eta, phi, charge, strangenessWeight, nTracksTracklets, 0);
         
+        if (fCentralityMethod.Length() > 0)
+            fNMcPrimAccept = centrality;
+        
         // analyse
         if(pt.size()){
             Analyse(pt, eta, phi, charge, strangenessWeight, fNMcPrimAccept, nTracksTracklets[1],nTracksTracklets[2], 0); 
@@ -754,10 +791,10 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
 
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventESD( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventESD( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
                                            vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
                                            vector<Float_t> &strangeArray,
-                                           vector<Int_t>   &nTracksTracklets, const Int_t step)
+                                           vector<Double_t>   &nTracksTracklets, const Int_t step)
 {
     // gives back the number of esd tracks and pointer to arrays with track
     // properties (pt, eta, phi)
@@ -779,7 +816,7 @@ Int_t AliAnalysisTaskMinijet::ReadEventESD( vector<Float_t> &ptArray,  vector<Fl
     
     //first loop to check how many tracks are accepted
     //------------------
-    Int_t nAcceptedTracks=0;
+    Double_t nAcceptedTracks=0;
     //Float_t nAcceptedTracksStrange=0;
     for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
         
@@ -861,10 +898,10 @@ Int_t AliAnalysisTaskMinijet::ReadEventESD( vector<Float_t> &ptArray,  vector<Fl
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventESDRecMcProp( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventESDRecMcProp( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
                                                     vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
                                                     vector<Float_t> &strangeArray,
-                                                    vector<Int_t> &nTracksTracklets, const Int_t step)
+                                                    vector<Double_t> &nTracksTracklets, const Int_t step)
 {
     // gives back the number of esd tracks and pointer to arrays with track
     // properties (pt, eta, phi) of mc particles if available
@@ -895,7 +932,7 @@ Int_t AliAnalysisTaskMinijet::ReadEventESDRecMcProp( vector<Float_t> &ptArray,
     fVertexZ[step]->Fill(vtxSPD->GetZ());
     
     //track loop
-    Int_t nAcceptedTracks=0;
+    Double_t nAcceptedTracks=0;
     for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
         
         AliVParticle *vtrack = fESDEvent->GetTrack(iTracks);
@@ -994,10 +1031,10 @@ Int_t AliAnalysisTaskMinijet::ReadEventESDRecMcProp( vector<Float_t> &ptArray,
 
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventESDMC(vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventESDMC(vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
                                              vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
                                              vector<Float_t> &strangeArray,
-                                             vector<Int_t> &nTracksTracklets, const Int_t step)
+                                             vector<Double_t> &nTracksTracklets, const Int_t step)
 {
     // gives back the number of charged prim MC particle and pointer to arrays
     // with particle properties (pt, eta, phi)
@@ -1038,10 +1075,10 @@ Int_t AliAnalysisTaskMinijet::ReadEventESDMC(vector<Float_t> &ptArray,  vector<F
     
     //----------------------------------
     //first track loop to check how many chared primary tracks are available
-    Int_t nChargedPrimaries=0;
-    Int_t nAllPrimaries=0;
+    Double_t nChargedPrimaries=0;
+    Double_t nAllPrimaries=0;
     
-    Int_t nPseudoTracklets=0;
+    Double_t nPseudoTracklets=0;
     for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
         AliMCParticle *track = dynamic_cast<AliMCParticle*>(mcEvent->GetTrack(iTracks));
         if (!track) {
@@ -1076,8 +1113,8 @@ Int_t AliAnalysisTaskMinijet::ReadEventESDMC(vector<Float_t> &ptArray,  vector<F
     //----------------------------------
     
     if(fDebug>2){
-        Printf("All in acceptance=%d",nAllPrimaries);
-        Printf("Charged in acceptance =%d",nChargedPrimaries);
+        Printf("All in acceptance=%f",nAllPrimaries);
+        Printf("Charged in acceptance =%f",nChargedPrimaries);
     }
     
     fChargedPi0->Fill(nAllPrimaries,nChargedPrimaries);
@@ -1150,10 +1187,10 @@ Int_t AliAnalysisTaskMinijet::ReadEventESDMC(vector<Float_t> &ptArray,  vector<F
 }
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventAOD( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventAOD( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
                                            vector<Float_t> &phiArray,  vector<Short_t> &chargeArray,
                                            vector<Float_t> &strangeArray,
-                                           vector<Int_t> &nTracksTracklets, const Int_t step)
+                                           vector<Double_t> &nTracksTracklets, const Int_t step)
 {
     // gives back the number of AOD tracks and pointer to arrays with track
     // properties (pt, eta, phi)
@@ -1180,7 +1217,7 @@ Int_t AliAnalysisTaskMinijet::ReadEventAOD( vector<Float_t> &ptArray,  vector<Fl
     if(fDebug>1) Printf("AOD tracks: %d", ntracks);
     
     
-    Int_t nAcceptedTracks=0;
+    Double_t nAcceptedTracks=0;
     Float_t nAcceptedTracksStrange=0;
     for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
         AliAODTrack *track = (AliAODTrack *)fAODEvent->GetTrack(iTracks);
@@ -1199,7 +1236,10 @@ Int_t AliAnalysisTaskMinijet::ReadEventAOD( vector<Float_t> &ptArray,  vector<Fl
         
         Double_t save= track->Pt();
         Double_t d0rphiz[2],covd0[3];
-        Bool_t isDca= track->PropagateToDCA(fAODEvent->GetPrimaryVertex(),fAODEvent->GetMagneticField(),9999.,d0rphiz,covd0);
+
+       AliAODTrack* clone = (AliAODTrack*) track->Clone("trk_clone"); //need clone, in order not to change track parameters
+        Bool_t isDca= clone->PropagateToDCA(fAODEvent->GetPrimaryVertex(),fAODEvent->GetMagneticField(),9999.,d0rphiz,covd0);
+       delete clone;
         fPropagateDca->Fill(Int_t(isDca));
         if(TMath::Abs(save - track->Pt())>1e-6) Printf("Before pt=%f, After pt=%f",save, track->Pt());
         
@@ -1280,10 +1320,10 @@ Int_t AliAnalysisTaskMinijet::ReadEventAOD( vector<Float_t> &ptArray,  vector<Fl
 }   
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
                                                     vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
                                                     vector<Float_t> &strangeArray,
-                                                    vector<Int_t> &nTracksTracklets, const Int_t step)
+                                                    vector<Double_t> &nTracksTracklets, const Int_t step)
 {
     // gives back the number of AOD tracks and pointer to arrays with track
     // properties (pt, eta, phi)
@@ -1314,7 +1354,7 @@ Int_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray,
     Double_t vzAOD=vtx->GetZ();
     fVertexZ[step]->Fill(vzAOD);
     
-    Int_t nAcceptedTracks=0;
+    Double_t nAcceptedTracks=0;
     for (Int_t iTracks = 0; iTracks < ntracks; iTracks++) {
         AliAODTrack *track = (AliAODTrack *)fAODEvent->GetTrack(iTracks);
         
@@ -1412,10 +1452,10 @@ Int_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray,
 
 
 //________________________________________________________________________
-Int_t AliAnalysisTaskMinijet::ReadEventAODMC( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
+Double_t AliAnalysisTaskMinijet::ReadEventAODMC( vector<Float_t> &ptArray,  vector<Float_t> &etaArray,
                                              vector<Float_t> &phiArray, vector<Short_t> &chargeArray,
                                              vector<Float_t> &strangeArray,
-                                             vector<Int_t> &nTracksTracklets, const Int_t step)
+                                             vector<Double_t> &nTracksTracklets, const Int_t step)
 {
     // gives back the number of AOD MC particles and pointer to arrays with particle
     // properties (pt, eta, phi)
@@ -1450,9 +1490,9 @@ Int_t AliAnalysisTaskMinijet::ReadEventAODMC( vector<Float_t> &ptArray,  vector<
     
     // Track loop: chek how many particles will be accepted
     //Float_t vzMC=0.;
-    Int_t nChargedPrim=0;
-    Int_t nAllPrim=0;
-    Int_t nPseudoTracklets=0;
+    Double_t nChargedPrim=0;
+    Double_t nAllPrim=0;
+    Double_t nPseudoTracklets=0;
     for (Int_t it = 0; it < ntracks; it++) {
         AliAODMCParticle *track = (AliAODMCParticle*)mcArray->At(it);
         if (!track) {
@@ -1550,7 +1590,7 @@ void AliAnalysisTaskMinijet::Analyse(const vector<Float_t> &pt,
                                      const vector<Float_t> &phi,
                                      const vector<Short_t> &charge,
                                      const vector<Float_t> &strangeWeight,
-                                     const Int_t ntracksCharged,
+                                     const Double_t ntracksCharged,
                                      const Int_t ntracklets,
                                      const Int_t nAll,
                                      const Int_t step)
@@ -1565,7 +1605,7 @@ void AliAnalysisTaskMinijet::Analyse(const vector<Float_t> &pt,
         Printf("Analysis Step=%d", step);
         if(fDebug>2){
             Printf("nAll=%d",nAll);
-            Printf("nCharged=%d",ntracksCharged);
+            Printf("nCharged=%f",ntracksCharged);
             for (Int_t i = 0; i < nAll; i++) {
                 Printf("pt[%d]=%f",i,pt[i]);
             }
@@ -1744,12 +1784,12 @@ void AliAnalysisTaskMinijet::Analyse(const vector<Float_t> &pt,
                 if(ntracksCharged<-1 || ntracksCharged>1500) AliInfo("particles out of range ncharge");
                 if(TMath::Abs(dEta)>2*fEtaCut) {
                     AliInfo("particles out of range dEta");
-                    AliInfo("eta1=%f, eta2=%f", etaOthers, etaEventAxis);
-                    AliInfo("step=%d",step);
+                    AliInfo(Form("eta1=%f, eta2=%f", etaOthers, etaEventAxis));
+                    AliInfo(Form("step=%d",step));
                 }
                 if(dPhi<-0.5*TMath::Pi() || dPhi>1.5*TMath::Pi()){
-                    AliInfo("particles out of range dPhi");
-                    AliInfo("phi1=%f, phi2=%f", phiOthers, phiEventAxis);
+                    AliInfo(Form("particles out of range dPhi"));
+                    AliInfo(Form("phi1=%f, phi2=%f", phiOthers, phiEventAxis));
                 }
                 
                 Bool_t isLikeSign = CheckLikeSign(chargeEventAxis, chargeOthers);