]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
DCA and qvecMC removed
authorlmilano <lmilano@cern.ch>
Fri, 28 Nov 2014 14:49:03 +0000 (15:49 +0100)
committerlmilano <lmilano@cern.ch>
Fri, 28 Nov 2014 14:49:23 +0000 (15:49 +0100)
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAllChAOD.cxx

index 1ef27ac28bbe6737a895084f51511663e8eb7f90..48dd0780370aaf99c2343fecf408e6cf53e87b20 100644 (file)
@@ -52,30 +52,30 @@ ClassImp(AliAnalysisTaskSpectraAllChAOD)
 
 //________________________________________________________________________
 AliAnalysisTaskSpectraAllChAOD::AliAnalysisTaskSpectraAllChAOD(const char *name) : AliAnalysisTaskSE(name),  
-  fAOD(0x0),
-  fTrackCuts(0x0),
-  fEventCuts(0x0),
-  fHelperPID(0x0),
-  fIsMC(0),
-  fDoDoubleCounting(0),
-  fFillOnlyEvents(0),
-  fCharge(0),
-  fVZEROside(0),
-  fOutput(0x0),
-  fnCentBins(20),
-  fnQvecBins(100),
-  fnNchBins(200),
-  fIsQvecCalibMode(0),
-  fQvecUpperLim(100),
-  fIsAOD160(1),
-  fnDCABins(60),
-  fDCAmin(-3),
-  fDCAmax(3),
-  fDCAzCut(999999.),
-  fQst(1),
-  fQtrk(0),
-  fQgenType(0),
-  fDoCentrSystCentrality(0)
+fAOD(0x0),
+fTrackCuts(0x0),
+fEventCuts(0x0),
+fHelperPID(0x0),
+fIsMC(0),
+fDoDoubleCounting(0),
+fFillOnlyEvents(0),
+fCharge(0),
+fVZEROside(0),
+fOutput(0x0),
+fnCentBins(20),
+fnQvecBins(100),
+fnNchBins(200),
+fIsQvecCalibMode(0),
+fQvecUpperLim(100),
+fIsAOD160(1),
+fnDCABins(60),
+fDCAmin(-3),
+fDCAmax(3),
+fDCAzCut(999999.),
+fQst(1),
+fQtrk(0),
+fQgenType(0),
+fDoCentrSystCentrality(0)
 {
   // Default constructor
   DefineInput(0, TChain::Class());
@@ -92,23 +92,44 @@ void AliAnalysisTaskSpectraAllChAOD::UserCreateOutputObjects()
   fOutput=new TList();
   fOutput->SetOwner();
   fOutput->SetName("fOutput");
-  
+
   if (!fTrackCuts) AliFatal("Track Cuts should be set in the steering macro");
   if (!fEventCuts) AliFatal("Event Cuts should be set in the steering macro");
   if (!fHelperPID)  AliFatal("HelperPID should be set in the steering macro");
-  
+
   // binning common to all the THn
   const Double_t ptBins[] = {0.20,0.30,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.4,1.6,1.8,2.0,2.4,2.8,3.2,3.6,4.0,5.0,6.0,7.0,8.0,9.0,10.,12.,15.,20.,25.,30.,35.,40.,50.,75.,100.};
   const Int_t nptBins=34;
   //const Double_t ptBins[] = {0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.6,1.8,2.0,2.4,2.8,3.2,3.6,4.0,5.0,6.0,7.0,8.0,9.0,10.,12.,15.,20.,25.,30.,35.,40.,50.,75.,100.};
   //const Int_t nptBins=44;
-  
+
   //dimensions of THnSparse for tracks
   const Int_t nvartrk=8;
   //                                             pt          cent          Q vec       IDrec          IDgen        isph         y             DCA 
-  Int_t    binsHistRealTrk[nvartrk] = {      nptBins, fnCentBins,     fnQvecBins,        4,             3,          3,        2,        fnDCABins};
-  Double_t xminHistRealTrk[nvartrk] = {         0.,          0.,              0.,       -.5,          -0.5,        0.5,      -0.5,          fDCAmin};
-  Double_t xmaxHistRealTrk[nvartrk] = {       10.,       100.,     fQvecUpperLim,       3.5,      2.5,        3.5,      0.5,         fDCAmax};    
+  //  Int_t    binsHistRealTrk[nvartrk] = {      nptBins, fnCentBins,     fnQvecBins,        4,             3,          3,        2,        fnDCABins};
+  //  Double_t xminHistRealTrk[nvartrk] = {         0.,          0.,              0.,       -.5,          -0.5,        0.5,      -0.5,          fDCAmin};
+  //  Double_t xmaxHistRealTrk[nvartrk] = {       10.,       100.,     fQvecUpperLim,       3.5,      2.5,        3.5,      0.5,         fDCAmax};
+  //  THnSparseF* NSparseHistTrk = new THnSparseF("NSparseHistTrk","NSparseHistTrk",nvartrk,binsHistRealTrk,xminHistRealTrk,xmaxHistRealTrk);
+  //  NSparseHistTrk->GetAxis(0)->SetTitle("#it{p}_{T,rec}");
+  //  NSparseHistTrk->GetAxis(0)->SetName("pT_rec");
+  //  NSparseHistTrk->SetBinEdges(0,ptBins);
+  //  NSparseHistTrk->GetAxis(1)->SetTitle(Form("%s cent",fEventCuts->GetCentralityMethod().Data()));
+  //  NSparseHistTrk->GetAxis(1)->SetName(Form("%s_cent",fEventCuts->GetCentralityMethod().Data()));
+  //  NSparseHistTrk->GetAxis(2)->SetTitle("Q vec");
+  //  NSparseHistTrk->GetAxis(2)->SetName("Q_vec");
+  //  NSparseHistTrk->GetAxis(3)->SetTitle("ID rec");
+  //  NSparseHistTrk->GetAxis(3)->SetName("ID_rec");
+  //  NSparseHistTrk->GetAxis(4)->SetTitle("ID gen");
+  //  NSparseHistTrk->GetAxis(4)->SetName("ID_gen");
+  //  NSparseHistTrk->GetAxis(5)->SetTitle("isph");
+  //  NSparseHistTrk->GetAxis(5)->SetName("isph");
+  //  NSparseHistTrk->GetAxis(6)->SetTitle("y");
+  //  NSparseHistTrk->GetAxis(6)->SetName("y");
+  //  NSparseHistTrk->GetAxis(7)->SetTitle("dca");
+  //  NSparseHistTrk->GetAxis(7)->SetName("dca");
+  Int_t    binsHistRealTrk[nvartrk] = {      nptBins, fnCentBins,     fnQvecBins,        4,             3,          3,        2};
+  Double_t xminHistRealTrk[nvartrk] = {         0.,          0.,              0.,       -.5,          -0.5,        0.5,      -0.5};
+  Double_t xmaxHistRealTrk[nvartrk] = {       10.,       100.,     fQvecUpperLim,       3.5,      2.5,        3.5,      0.5};
   THnSparseF* NSparseHistTrk = new THnSparseF("NSparseHistTrk","NSparseHistTrk",nvartrk,binsHistRealTrk,xminHistRealTrk,xmaxHistRealTrk);
   NSparseHistTrk->GetAxis(0)->SetTitle("#it{p}_{T,rec}");
   NSparseHistTrk->GetAxis(0)->SetName("pT_rec");
@@ -125,10 +146,10 @@ void AliAnalysisTaskSpectraAllChAOD::UserCreateOutputObjects()
   NSparseHistTrk->GetAxis(5)->SetName("isph");
   NSparseHistTrk->GetAxis(6)->SetTitle("y");
   NSparseHistTrk->GetAxis(6)->SetName("y");
-  NSparseHistTrk->GetAxis(7)->SetTitle("dca");
-  NSparseHistTrk->GetAxis(7)->SetName("dca");
+
+
   fOutput->Add(NSparseHistTrk);
-  
+
   //dimensions of THnSparse for stack
   const Int_t nvarst=7;
   //                                             pt          cent    IDgen        isph        y    etaselected       Qvec gen
@@ -152,13 +173,13 @@ void AliAnalysisTaskSpectraAllChAOD::UserCreateOutputObjects()
   NSparseHistSt->GetAxis(6)->SetTitle("Q vec gen");
   NSparseHistSt->GetAxis(6)->SetName("Q_vec_gen");
   fOutput->Add(NSparseHistSt);
-  
+
   //dimensions of THnSparse for the normalization
-  const Int_t nvarev=4;
-  //                                             cent             Q vec                Nch    Qvec gen
-  Int_t    binsHistRealEv[nvarev] = {    fnCentBins,      fnQvecBins,           fnNchBins,      fnQvecBins};
-  Double_t xminHistRealEv[nvarev] = {           0.,               0.,                   0.,             0.};
-  Double_t xmaxHistRealEv[nvarev] = {       100.,  fQvecUpperLim,               2000.,       fQvecUpperLim};
+  const Int_t nvarev=3;
+  //                                             cent             Q vec                Nch
+  Int_t    binsHistRealEv[nvarev] = {    fnCentBins,      fnQvecBins,           fnNchBins};
+  Double_t xminHistRealEv[nvarev] = {           0.,               0.,                   0.};
+  Double_t xmaxHistRealEv[nvarev] = {       100.,  fQvecUpperLim,               2000.};
   THnSparseF* NSparseHistEv = new THnSparseF("NSparseHistEv","NSparseHistEv",nvarev,binsHistRealEv,xminHistRealEv,xmaxHistRealEv);
   NSparseHistEv->GetAxis(0)->SetTitle(Form("%s cent",fEventCuts->GetCentralityMethod().Data()));
   NSparseHistEv->GetAxis(0)->SetName(Form("%s_cent",fEventCuts->GetCentralityMethod().Data()));
@@ -166,10 +187,8 @@ void AliAnalysisTaskSpectraAllChAOD::UserCreateOutputObjects()
   NSparseHistEv->GetAxis(1)->SetName("Q_vec");
   NSparseHistEv->GetAxis(2)->SetTitle("N charged");
   NSparseHistEv->GetAxis(2)->SetName("N_ch");
-  NSparseHistEv->GetAxis(3)->SetTitle("Q vec gen");
-  NSparseHistEv->GetAxis(3)->SetName("Q_vec_gen");
   fOutput->Add(NSparseHistEv);
-  
+
   PostData(1, fOutput  );
   PostData(2, fEventCuts);
   PostData(3, fTrackCuts);
@@ -187,17 +206,17 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *)
     AliWarning("ERROR: AliAODEvent not available \n");
     return;
   }
-  
+
   if (strcmp(fAOD->ClassName(), "AliAODEvent"))
-    {
-      AliFatal("Not processing AODs");
-    }
-  
+  {
+    AliFatal("Not processing AODs");
+  }
+
   if(!fEventCuts->IsSelected(fAOD,fTrackCuts))return;//event selection
 
   //Default TPC priors
   if(fHelperPID->GetPIDType()==kBayes)fHelperPID->GetPIDCombined()->SetDefaultTPCPriors();//FIXME we should modify the task to change priors
-  
+
   Double_t Qvec=0.;
   if(fIsQvecCalibMode){
     if(fVZEROside==0)Qvec=fEventCuts->GetqV0A();
@@ -205,7 +224,7 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *)
     else if (fVZEROside==2)Qvec=fEventCuts->GetqTPC();
   }
   else Qvec=fEventCuts->GetQvecPercentile(fVZEROside);
-  
+
   Double_t QvecMC = 0.;
   if(fIsMC){
     if(fIsQvecCalibMode){
@@ -213,51 +232,51 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *)
     }
     else QvecMC = fEventCuts->GetQvecPercentileMC(fVZEROside, fQgenType);
   }
-  
+
   Double_t Cent=(fDoCentrSystCentrality)?1.01*fEventCuts->GetCent():fEventCuts->GetCent();
-  
+
   // First do MC to fill up the MC particle array
   TClonesArray *arrayMC = 0;
   if (fIsMC)
+  {
+    arrayMC = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
+    if (!arrayMC) {
+      AliFatal("Error: MC particles branch not found!\n");
+    }
+    Int_t nMC = arrayMC->GetEntries();
+    for (Int_t iMC = 0; iMC < nMC; iMC++)
     {
-      arrayMC = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
-      if (!arrayMC) {
-       AliFatal("Error: MC particles branch not found!\n");
-      }
-      Int_t nMC = arrayMC->GetEntries();
-      for (Int_t iMC = 0; iMC < nMC; iMC++)
-       {
-         AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);
-         if(!partMC->Charge()) continue;//Skip neutrals
-         if(fCharge != 0 && partMC->Charge()*fCharge < 0.) continue;//if fCharge != 0 only select fCharge
-         
-         //flag to select particle in the same ETA acceptance of the tracks (to be used for the comparison with AllCh)
-         Double_t etaselected=-1.;
-         if(partMC->Eta()>=fTrackCuts->GetEtaMin() && partMC->Eta()<=fTrackCuts->GetEtaMax())etaselected=1.;
-         
-         //pt     cent    IDgen        isph        y
-         Double_t varSt[7];
-         varSt[0]=partMC->Pt();
-         varSt[1]=Cent;
-         varSt[2]=(Double_t)fHelperPID->GetParticleSpecies(partMC);
-         varSt[3]=(Double_t)partMC->IsPhysicalPrimary();
-         varSt[4]=partMC->Y();
-         varSt[5]=etaselected;
-         
-         if(fQst==0) varSt[6]=Qvec;
-         else varSt[6]=QvecMC;
-         
-         ((THnSparseF*)fOutput->FindObject("NSparseHistSt"))->Fill(varSt);//stack loop
-         
-         //Printf("a particle");
-         
-       }
+      AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);
+      if(!partMC->Charge()) continue;//Skip neutrals
+      if(fCharge != 0 && partMC->Charge()*fCharge < 0.) continue;//if fCharge != 0 only select fCharge
+
+      //flag to select particle in the same ETA acceptance of the tracks (to be used for the comparison with AllCh)
+      Double_t etaselected=-1.;
+      if(partMC->Eta()>=fTrackCuts->GetEtaMin() && partMC->Eta()<=fTrackCuts->GetEtaMax())etaselected=1.;
+
+      //pt     cent    IDgen        isph        y
+      Double_t varSt[7];
+      varSt[0]=partMC->Pt();
+      varSt[1]=Cent;
+      varSt[2]=(Double_t)fHelperPID->GetParticleSpecies(partMC);
+      varSt[3]=(Double_t)partMC->IsPhysicalPrimary();
+      varSt[4]=partMC->Y();
+      varSt[5]=etaselected;
+
+      if(fQst==0) varSt[6]=Qvec;
+      else varSt[6]=QvecMC;
+
+      ((THnSparseF*)fOutput->FindObject("NSparseHistSt"))->Fill(varSt);//stack loop
+
+      //Printf("a particle");
+
     }
-  
+  }
+
   //main loop on tracks
-  
+
   Int_t Nch = 0.;
-  
+
   for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {
     AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));
     if(!track) AliFatal("Not a standard AOD");
@@ -268,80 +287,80 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *)
       Double_t y= track->Y(fHelperPID->GetMass((AliHelperParticleSpecies_t)IDrec));
       Int_t IDgen=kSpUndefined;//set if MC
       Int_t isph=-999;
-//       Int_t iswd=-999;
-      
+      //       Int_t iswd=-999;
+
       if (arrayMC) {
-       AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
-       if (!partMC) { 
-         AliError("Cannot get MC particle");
-         continue; 
-       }
-       IDgen=fHelperPID->GetParticleSpecies(partMC);
-       isph=partMC->IsPhysicalPrimary();
-       //iswd=partMC->IsSecondaryFromWeakDecay();//FIXME not working on old productions - removed Apr 8th 2014
-       
-       if(fIsAOD160){// enabled for new ADO160 only
-         if(partMC->IsSecondaryFromWeakDecay()) isph=2.;
-         if(partMC->IsSecondaryFromMaterial()) isph=3.;
-
-       }
+        AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
+        if (!partMC) {
+          AliError("Cannot get MC particle");
+          continue;
+        }
+        IDgen=fHelperPID->GetParticleSpecies(partMC);
+        isph=partMC->IsPhysicalPrimary();
+        //iswd=partMC->IsSecondaryFromWeakDecay();//FIXME not working on old productions - removed Apr 8th 2014
+
+        if(fIsAOD160){// enabled for new ADO160 only
+          if(partMC->IsSecondaryFromWeakDecay()) isph=2.;
+          if(partMC->IsSecondaryFromMaterial()) isph=3.;
+
+        }
       }
-      
+
       /*** DCA ***/
       Double_t dcaxy = -999.;
       Double_t dcaz = -999.;
-      
+
       Double_t p[2]; 
       if(GetDCA(track,p)){ dcaxy=p[0]; dcaz=p[1];}
-      
+
       if(dcaz >= fDCAzCut) continue;
 
       //if the q vector is done using the TPC, we avoid overlap
       if (fVZEROside==2 && TMath::Abs(track->Eta())<0.5)continue;
-          
-    //pt     cent    Q vec     IDrec     IDgen       isph      y
-      Double_t varTrk[8];
+
+      //pt     cent    Q vec     IDrec     IDgen       isph      y
+      //      Double_t varTrk[8];
+      Double_t varTrk[7];
       varTrk[0]=track->Pt();
       varTrk[1]=Cent;
       if(fIsMC && fQtrk==1) varTrk[2]=QvecMC;
-        else varTrk[2]=Qvec;
+      else varTrk[2]=Qvec;
       varTrk[3]=(Double_t)IDrec;
       varTrk[4]=(Double_t)IDgen;
       varTrk[5]=(Double_t)isph;
       varTrk[6]=y;
-      varTrk[7]=dcaxy;
+      //varTrk[7]=dcaxy;
       ((THnSparseF*)fOutput->FindObject("NSparseHistTrk"))->Fill(varTrk);//track loop
-      
+
       //for nsigma PID fill double counting of ID
       if(fHelperPID->GetPIDType()<kBayes && fDoDoubleCounting){//only nsigma
-       Bool_t *HasDC;
-       HasDC=fHelperPID->GetDoubleCounting(track,kTRUE);//get the array with double counting
-       for(Int_t ipart=0;ipart<kNSpecies;ipart++){
-         if(HasDC[ipart]==kTRUE){
-           varTrk[3]=(Double_t)ipart;
-           ((THnSparseF*)fOutput->FindObject("NSparseHistTrk"))->Fill(varTrk);//track loop
-         }
-       }
+        Bool_t *HasDC;
+        HasDC=fHelperPID->GetDoubleCounting(track,kTRUE);//get the array with double counting
+        for(Int_t ipart=0;ipart<kNSpecies;ipart++){
+          if(HasDC[ipart]==kTRUE){
+            varTrk[3]=(Double_t)ipart;
+            ((THnSparseF*)fOutput->FindObject("NSparseHistTrk"))->Fill(varTrk);//track loop
+          }
+        }
       }
-      
+
       //fill all charged (3)
       varTrk[3]=3.;
       varTrk[4]=3.;
       ((THnSparseF*)fOutput->FindObject("NSparseHistTrk"))->Fill(varTrk);//track loop
     }//end if fFillOnlyEvents
-    
+
     //Printf("a track");
-      
+
     Nch++;
   } // end loop on tracks
-  
+
   Double_t varEv[4];
   varEv[0]=Cent;
   varEv[1]=Qvec;
   varEv[2]=Nch;
-  varEv[3]=QvecMC;
   ((THnSparseF*)fOutput->FindObject("NSparseHistEv"))->Fill(varEv);//event loop
-  
+
   PostData(1, fOutput  );
   PostData(2, fEventCuts);
   PostData(3, fTrackCuts);
@@ -350,13 +369,13 @@ void AliAnalysisTaskSpectraAllChAOD::UserExec(Option_t *)
 
 //_________________________________________________________________
 Bool_t  AliAnalysisTaskSpectraAllChAOD::GetDCA(const AliAODTrack* trk, Double_t * p){
-  
+
   //AliAODTrack::DCA(): for newest AOD fTrack->DCA() always gives -999. This should fix.
   //FIXME should update EventCuts?
   //FIXME add track->GetXYZ(p) method
-  
+
   double xyz[3],cov[3];
-  
+
   if (!trk->GetXYZ(xyz)) { // dca is not stored
     AliExternalTrackParam etp;
     etp.CopyFromVTrack(trk);