]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
(1) add option for LHC11a which allows to read only events with SDD included. (2...
authoresicking <esicking@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Nov 2011 11:13:46 +0000 (11:13 +0000)
committeresicking <esicking@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Nov 2011 11:13:46 +0000 (11:13 +0000)
PWG4/JetTasks/AliAnalysisTaskMinijet.cxx
PWG4/JetTasks/AliAnalysisTaskMinijet.h
PWG4/macros/AddTaskMinijet.C

index 4e510a7979cb081cbedbf7c49323ea5f7280fec1..f5109d3b47e216c82663612908d45fd600c73d76 100644 (file)
@@ -67,6 +67,8 @@ ClassImp(AliAnalysisTaskMinijet)
       fEtaCutSeed(0.9),
       fSelectParticles(1),
       fSelectParticlesAssoc(1),
+      fCheckSDD(true),
+      fSelOption(1),
       fESDEvent(0),
       fAODEvent(0),
       fNMcPrimAccept(0),
@@ -178,7 +180,7 @@ void AliAnalysisTaskMinijet::UserCreateOutputObjects()
   }
 
   fChargedPi0  = new TH2F("fChargedPi0", "fChargedPi0", 200, -0.5, 199.5, 200, -0.5, 199.5);
-  fVertexCheck = new TH1F("fVertexCheck", "fVertexCheck", 4, -0.5, 3.5);
+  fVertexCheck = new TH1F("fVertexCheck", "fVertexCheck", 100, -0.5, 99.5);
     
 
   //----------------------
@@ -186,13 +188,13 @@ void AliAnalysisTaskMinijet::UserCreateOutputObjects()
   Double_t ptMin = 0.0, ptMax = 100.;
   Int_t nPtBins = 39; 
   Double_t binsPt[]  = {0.0, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8, 
-                       0.9, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 9.0, 
-                       10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 100.0};
+                       0.9, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 9.0, 
+                       10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 100.0};
   
-  //  Int_t nPtBins = 100;
-  //   Double_t ptMin = 1.e-2, ptMax = 100.;
-  //   Double_t *binsPt = 0;
-  //   binsPt = CreateLogAxis(nPtBins,ptMin,ptMax);
+  //Int_t nPtBinsAll = 100;
+  //Double_t ptMinAll = 1.e-2, ptMaxAll = 100.;
+  //Double_t *binsPtAll = 0;
+  //binsPtAll = (Double_t*)CreateLogAxis(nPtBinsAll,ptMinAll,ptMaxAll);
   
   
   Double_t ptMin2 = 0.0, ptMax2 = 100.;
@@ -466,10 +468,43 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
  
   if(!fAODEvent && !fESDEvent)return;
 
-  //=================== AOD ===============
+  // SDD check for LHC11a
+  if (fCheckSDD) { 
 
+    //ESD
+    if(fESDEvent){
+      if(fSelOption==0){
+       const AliMultiplicity *mul = fESDEvent->GetMultiplicity();
+       Int_t nClu3 = mul->GetNumberOfITSClusters(2);
+       Int_t nClu4 = mul->GetNumberOfITSClusters(3);
+       if(nClu3==0 &&  nClu4==0) return;
+      }
+      else if (fSelOption==1){
+       TString trcl = fESDEvent->GetFiredTriggerClasses().Data();
+       if (!(trcl.Contains("CINT1-B-NOPF-ALLNOTRD"))) return;
+      }
+    }
 
+    //AOD
+    if(fAODEvent){
+      if(fSelOption==0){
+       Bool_t useEvent = false;
+       Int_t nTracks = fAODEvent->GetNTracks();
+       for(Int_t itrack=0; itrack<nTracks; itrack++) {
+         AliAODTrack * track = fAODEvent->GetTrack(itrack);
+         if(TESTBIT(track->GetITSClusterMap(),2) || TESTBIT(track->GetITSClusterMap(),3) ){
+           useEvent=true;
+           break;
+         }
+       }
+       if (!useEvent) return;
+      }
+      else if(fSelOption==1){
+       TString trcl = fAODEvent->GetFiredTriggerClasses().Data();
+       if (!(trcl.Contains("CINT1-B-NOPF-ALLNOTRD"))) return;
+      }
+    }
+  }
 
   //reset values
   fNMcPrimAccept=0;// number of accepted primaries
@@ -482,7 +517,7 @@ void AliAnalysisTaskMinijet::UserExec(Option_t *)
                        (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))
                       ->IsEventSelected() &  fTriggerType); 
 
-    
+  
   if(fDebug){
     Printf("IsSelected = %d", isSelected);
     Printf("CheckEvent(true)= %d", CheckEvent(true));
@@ -1126,7 +1161,7 @@ Int_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray,
       nAcceptedTracks++;
 
       //save track properties in vector
-      if(vtrack->GetLabel()<0){ //fake tracks
+      if(vtrack->GetLabel()<0){ //fake tracks before "label<0", but crash in AOD079 // what is the meaning of label 0
        //      Printf("Fake track");
        //      continue;
        ptArray.push_back(track->Pt());
@@ -1136,13 +1171,14 @@ Int_t AliAnalysisTaskMinijet::ReadEventAODRecMcProp( vector<Float_t> &ptArray,
       }
       else{//mc properties
        AliAODMCParticle *partOfTrack = (AliAODMCParticle*)mcArray->At(vtrack->GetLabel());
-       
-       ptArray.push_back(partOfTrack->Pt());
-       etaArray.push_back(partOfTrack->Eta());
-       phiArray.push_back(partOfTrack->Phi());
-       chargeArray.push_back(vtrack->Charge());//partOfTrack?
+       if(!partOfTrack) Printf("label=%d", vtrack->GetLabel());
+       if(partOfTrack){
+         ptArray.push_back(partOfTrack->Pt());
+         etaArray.push_back(partOfTrack->Eta());
+         phiArray.push_back(partOfTrack->Phi());
+         chargeArray.push_back(vtrack->Charge());//partOfTrack?
+       }
       }
-
     }
   }
   //need to check this option for MC
@@ -1658,6 +1694,7 @@ Bool_t AliAnalysisTaskMinijet::CheckEvent(const Bool_t recVertex)
       //rec vertex
       const AliESDVertex*      vertexESDg   = fESDEvent->GetPrimaryVertex(); // uses track or SPD vertexer
       if(!vertexESDg) return false;
+      fVertexCheck->Fill(vertexESDg->GetNContributors());
       if(vertexESDg->GetNContributors()<=0)return false;
       Float_t fVzg= vertexESDg->GetZ();
       if(TMath::Abs(fVzg)>fVertexZCut) return false;
@@ -1668,7 +1705,7 @@ Bool_t AliAnalysisTaskMinijet::CheckEvent(const Bool_t recVertex)
       if(vtxSPD->GetNContributors()<=0)return false;
       Float_t fVzSPD= vtxSPD->GetZ();
       if(TMath::Abs(fVzSPD)>fVertexZCut) return false;
-
+      
     }
     return true;
   }
@@ -1701,9 +1738,10 @@ Bool_t AliAnalysisTaskMinijet::CheckEvent(const Bool_t recVertex)
       
       AliAODVertex*    vertex= (AliAODVertex*)fAODEvent->GetPrimaryVertex();
       if(!vertex) return false;
+      fVertexCheck->Fill(vertex->GetNContributors());
       if(vertex->GetNContributors()<=0) return false;
       Double_t vzAOD=vertex->GetZ();
-      if(TMath::Abs(vzAOD)<1e-9) return false;
+      // if(TMath::Abs(vzAOD)<1e-9) return false;
       if(TMath::Abs(vzAOD)>fVertexZCut) return false;
        
       AliAODVertex*    vertexSPD= (AliAODVertex*)fAODEvent->GetPrimaryVertexSPD();
index e3cdf0da257ed0bd6280d3a6952a79d17ee81091..1c4c7c3d96e5cd6b496d99aaef95f5b0efbe8247 100644 (file)
@@ -39,6 +39,7 @@ class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {
   void         SetMaxEtaSeed(Float_t etaCutSeed)                     {fEtaCutSeed = etaCutSeed;}\r
   void         SetSelectParticles(Int_t selectParticles)             {fSelectParticles = selectParticles;}\r
   void         SetSelectParticlesAssoc(Int_t selectParticlesAssoc)   {fSelectParticlesAssoc = selectParticlesAssoc;}\r
+  void         SetCheckSDD (Bool_t checkSDD, Int_t selOption)        {fCheckSDD = checkSDD; fSelOption = selOption;}\r
 \r
 \r
  private:\r
@@ -94,6 +95,8 @@ class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {
   Float_t      fEtaCutSeed;                 // eta acceptance cut for seed\r
   Int_t        fSelectParticles;            // only in cas of MC: use also neutral particles or not \r
   Int_t        fSelectParticlesAssoc;       // only in cas of MC: use also neutral particles or not \r
+  Bool_t       fCheckSDD;                   // check if SDD was in read out partition (needed for LHC11a)\r
+  Int_t        fSelOption;                  // 0 = use hit in SDD for event selection, 1 = use trigger for event selection\r
 \r
   AliESDEvent *fESDEvent;                   //! esd event\r
   AliAODEvent *fAODEvent;                   //! aod event\r
@@ -104,7 +107,7 @@ class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {
   Float_t      fVzEvent;                    // global variable for rec vertex position\r
   Double_t     fMeanPtRec;                  // global variable for rec mean pt\r
   Double_t     fLeadingPtRec;               // global variable for rec mean pt\r
-  \r
+\r
   TList             *fHists;                       // output list\r
   TH1F       *fStep;                        // how many events have passed which correction step\r
   TH1F       *fHistPt;                      // Pt spectrum ESD\r
@@ -158,7 +161,7 @@ class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {
   TProfile   * fPNch07Tracklet[6];           // nCharged with pT>fTriggerPtCut vs nTracklet\r
 \r
   TH1F       * fDPhiEventAxis[6];           // delta phi of associate tracks to event axis\r
-  \r
\r
   AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented\r
   AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented\r
   \r
index edaeba3e0068bf9faa169bed223a53acc6ec8485..c0642277705ec1fdb859040302e0ded4f725b6c4 100644 (file)
@@ -6,14 +6,17 @@ AliAnalysisTaskMinijet* AddTaskMinijet(Int_t runNumber     =    -1,
                                       Float_t ptTrigMin   =   0.7,
                                       Float_t ptAssocMin  =   0.4,
                                       Float_t maxVtxZ     =   10.,
-                                      Int_t   filterBit   =   128,
+                                      Int_t   filterBit   =    96,
                                       Int_t   debugLevel  =     0,
                                       Float_t maxEta      =   0.9,
                                       Float_t ptMin       =   0.2,
-                                      Float_t ptMax       =  50.0)
+                                      Float_t ptMax       =  50.0,
+                                      Bool_t  checkSDD    = false,
+                                      Int_t   checkOption =     1,
+                                      Bool_t  onlyPrim    = false)
 {
   
-  // Get the pointer to the existing analysis manager via the static access method.
+  // Get the pointer to the existing analysis manager via the static access method
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) mgr = new AliAnalysisManager("Analysis train");
 
@@ -36,7 +39,11 @@ AliAnalysisTaskMinijet* AddTaskMinijet(Int_t runNumber     =    -1,
   taskMB->SetTriggerMask(AliVEvent::kMB);
   // taskMB->SelectCollisionCandidates(AliVEvent::kMB);//MB  //now inside task
   taskMB->SetFilterBit(filterBit); // used only in AOD case
+  taskMB->SetCheckSDD(checkSDD, checkOption);
   taskMB->SetDebugLevel(debugLevel);
+
+  //use this only for correction map plots -> Split contmaintion and rec efficiency
+  taskMB->SetAnalyseOnlyPrimaries(onlyPrim);
  
   if(!format.CompareTo("esd")){
     taskMB->SetCuts(esdTrackCutsTPC);
@@ -54,12 +61,13 @@ AliAnalysisTaskMinijet* AddTaskMinijet(Int_t runNumber     =    -1,
     taskHM->SetUseMC(useMC, mcOnly);
     taskHM->SetTriggerPtCut(ptTrigMin);
     taskHM->SetAssociatePtCut(ptAssocMin);
-    taskMB->SetMaxEta(maxEta);
-    taskMB->SetPtRange(ptMin, ptMax);
+    taskHM->SetMaxEta(maxEta);
+    taskHM->SetPtRange(ptMin, ptMax);
     taskHM->SetMaxVertexZ(maxVtxZ);
     taskHM->SetTriggerMask(AliVEvent::kHighMult);
     //taskHM->SelectCollisionCandidates(AliVEvent::kHighMult); // now inside task
-    taskMB->SetFilterBit(filterBit); // used only in AOD case
+    taskHM->SetFilterBit(filterBit); // used only in AOD case
+    taskHM->SetCheckSDD(checkSDD, checkOption);
     taskHM->SetDebugLevel(debugLevel);
 
     if(!format.CompareTo("esd")){