]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
- Qvector distribution added - runGridModified - Asymmetric eta cut implemented ...
authorlmilano <lmilano@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Jun 2012 16:03:32 +0000 (16:03 +0000)
committerlmilano <lmilano@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Jun 2012 16:03:32 +0000 (16:03 +0000)
PWGLF/SPECTRA/PiKaPr/TestAOD/AliAnalysisTaskSpectraAOD.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODEventCuts.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODEventCuts.h
PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODTrackCuts.cxx
PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODTrackCuts.h
PWGLF/SPECTRA/PiKaPr/TestAOD/MainAnalysis.C
PWGLF/SPECTRA/PiKaPr/TestAOD/QAPlots.C
PWGLF/SPECTRA/PiKaPr/TestAOD/runAODProof.C
PWGLF/SPECTRA/PiKaPr/TestAOD/runGrid.C

index 74ce108b7fb4d9e3949052c931237545241d897f..4a679883efb6a22bbfa83af720a558f333ebcfe9 100644 (file)
@@ -115,7 +115,7 @@ void AliAnalysisTaskSpectraAOD::UserExec(Option_t *)
        {\r
          AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);\r
          if(!partMC->Charge()) continue;//Skip neutrals\r
-         if(TMath::Abs(partMC->Eta()) < fTrackCuts->GetEta()){//charged hadron are filled inside the eta acceptance\r
+         if(partMC->Eta() > fTrackCuts->GetEtaMin() && partMC->Eta() < fTrackCuts->GetEtaMax()){//charged hadron are filled inside the eta acceptance\r
            fHistMan->GetPtHistogram(kHistPtGen)->Fill(partMC->Pt(),partMC->IsPhysicalPrimary());\r
          }\r
          //rapidity cut\r
@@ -132,7 +132,7 @@ void AliAnalysisTaskSpectraAOD::UserExec(Option_t *)
   //main loop on tracks\r
   for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {\r
     AliAODTrack* track = fAOD->GetTrack(iTracks);\r
-    if (!fTrackCuts->IsSelected(track)) continue;\r
+    if (!fTrackCuts->IsSelected(track,kTRUE)) continue;\r
     \r
     fPID->FillQAHistos(fHistMan, track, fTrackCuts);\r
     \r
index bcd9ea9a6117b53c79548406ff94d695b0cecc43..1a5937adc0173f4397a887d11697e290d300d6ac 100644 (file)
@@ -41,7 +41,7 @@ using namespace std;
 
 ClassImp(AliSpectraAODEventCuts)
 
-AliSpectraAODEventCuts::AliSpectraAODEventCuts(const char *name) : TNamed(name, "AOD Event Cuts"), fAOD(0),fIsMC(0), fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),fHistoNChAftSel(0)
+AliSpectraAODEventCuts::AliSpectraAODEventCuts(const char *name) : TNamed(name, "AOD Event Cuts"), fAOD(0),fIsMC(0), fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fQVectorPosCutMin(0), fQVectorPosCutMax(0), fQVectorNegCutMin(0), fQVectorNegCutMax(0), fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),fHistoNChAftSel(0),fHistoQVectorPos(0),fHistoQVectorNeg(0)
 {
   // Constructor
   fHistoCuts = new TH1I("fEventCuts", "Event Cuts", kNVtxCuts, -0.5, kNVtxCuts - 0.5);
@@ -50,9 +50,14 @@ AliSpectraAODEventCuts::AliSpectraAODEventCuts(const char *name) : TNamed(name,
   fHistoEtaBefSel = new TH1F("fHistoEtaBefSel", "Eta distr before event selection",500,-2,2);
   fHistoEtaAftSel = new TH1F("fHistoEtaAftSel", "Eta distr after event selection",500,-2,2);
   fHistoNChAftSel = new TH1F("fHistoNChAftSel", "NCh distr after event selection",3000,-0.5,2999.5);
+  fHistoQVectorPos = new TH1F("fHistoQVectorPos", "QVectorPos distribution",100,0,10);
+  fHistoQVectorNeg = new TH1F("fHistoQVectorNeg", "QVectorNeg distribution",100,0,10);
   fCentralityCutMin = 0.0;      // default value of centrality cut minimum, 0 ~ no cut
   fCentralityCutMax = 10000.0;  // default value of centrality cut maximum,  ~ no cut
-
+  fQVectorPosCutMin=0.0;
+  fQVectorPosCutMax=10000.0;
+  fQVectorNegCutMin=0.0;
+  fQVectorNegCutMax=10000.0;
 }
 
 //______________________________________________________
@@ -62,15 +67,16 @@ Bool_t AliSpectraAODEventCuts::IsSelected(AliAODEvent * aod,AliSpectraAODTrackCu
   fAOD = aod;
   fTrackCuts = trackcuts;
   fHistoCuts->Fill(kProcessedEvents);
-  Printf("\n\n\n\n\n\n\nProcessed");
-  Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);//FIXME we can add the trigger mask here
-  Printf("\n\n\n\n\n\n\nPHYSICS SELECTION:     %i",isSelected);
-  if(!isSelected)return isSelected;
+  Bool_t IsPhysSel = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);//FIXME we can add the trigger mask here
+  if(!IsPhysSel)return IsPhysSel;
   fHistoCuts->Fill(kPhysSelEvents);
   //loop on tracks, before event selection, filling QA histos
   AliAODVertex * vertex = fAOD->GetPrimaryVertex();//FIXME vertex is recreated
   if(vertex)fHistoVtxBefSel->Fill(vertex->GetZ());
-  fIsSelected = (CheckVtxRange() && CheckCentralityCut());
+  fIsSelected =kFALSE;
+  if(CheckVtxRange() && CheckCentralityCut()){ //selection on vertex and Centrality
+    fIsSelected=CheckQVectorCut(); // QVector is calculated only if the centrality and vertex are correct
+  }
   if(fIsSelected){
     fHistoCuts->Fill(kAcceptedEvents);
     if(vertex)fHistoVtxAftSel->Fill(vertex->GetZ());
@@ -78,7 +84,7 @@ Bool_t AliSpectraAODEventCuts::IsSelected(AliAODEvent * aod,AliSpectraAODTrackCu
   Int_t Nch=0;
   for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {
     AliAODTrack* track = fAOD->GetTrack(iTracks);
-    if (!fTrackCuts->IsSelected(track)) continue;
+    if (!fTrackCuts->IsSelected(track,kFALSE)) continue;
     fHistoEtaBefSel->Fill(track->Eta());
     if(fIsSelected){
       fHistoEtaAftSel->Fill(track->Eta());
@@ -120,6 +126,44 @@ Bool_t AliSpectraAODEventCuts::CheckCentralityCut()
   return kFALSE;
 }
 
+//______________________________________________________
+Bool_t AliSpectraAODEventCuts::CheckQVectorCut()
+{
+  // Check qvector cut
+  /// FIXME: Q vector
+  // //Selection on QVector, before ANY other selection on the event
+  // //Spectra MUST be normalized wrt events AFTER the selection on Qvector
+  Double_t Qx2EtaPos = 0, Qy2EtaPos = 0;
+  Double_t Qx2EtaNeg = 0, Qy2EtaNeg = 0;
+  Int_t multPos = 0;
+  Int_t multNeg = 0;
+  for(Int_t iT = 0; iT < fAOD->GetNumberOfTracks(); iT++) {
+    AliAODTrack* aodTrack = fAOD->GetTrack(iT);
+    if (!fTrackCuts->IsSelected(aodTrack,kFALSE)) continue;
+    if (aodTrack->Eta() >= 0){
+      multPos++;
+      Qx2EtaPos += TMath::Cos(2*aodTrack->Phi()); 
+      Qy2EtaPos += TMath::Sin(2*aodTrack->Phi());
+    } else {
+      multNeg++;
+      Qx2EtaNeg += TMath::Cos(2*aodTrack->Phi()); 
+      Qy2EtaNeg += TMath::Sin(2*aodTrack->Phi());
+    }
+  } 
+  Double_t qPos=-999;
+  if(multPos!=0)qPos= TMath::Sqrt((Qx2EtaPos*Qx2EtaPos + Qy2EtaPos*Qy2EtaPos)/multPos);
+  Double_t qNeg=-999;
+  if(multNeg!=0)qNeg= TMath::Sqrt((Qx2EtaNeg*Qx2EtaNeg + Qy2EtaNeg*Qy2EtaNeg)/multNeg);
+  
+  
+  if(qPos<fQVectorPosCutMin || qPos>fQVectorPosCutMax || qNeg<fQVectorNegCutMin || qNeg>fQVectorNegCutMax)return kFALSE;
+  fHistoCuts->Fill(kQVector);
+  fHistoQVectorPos->Fill(qPos);
+  fHistoQVectorNeg->Fill(qNeg);
+  return kTRUE;
+
+}
+
 //______________________________________________________
 void AliSpectraAODEventCuts::PrintCuts()
 {
@@ -131,6 +175,7 @@ void AliSpectraAODEventCuts::PrintCuts()
   cout << " > Vertex out of range: " << fHistoCuts->GetBinContent(kVtxRange + 1) << endl;
   cout << " > Events cut by centrality: " << fHistoCuts->GetBinContent(kVtxCentral + 1) << endl;
   cout << " > Events without vertex: " << fHistoCuts->GetBinContent(kVtxNoEvent + 1) << endl;
+  cout << " > QVector cut: " << fHistoCuts->GetBinContent(kQVector + 1) << endl;
 }
 //______________________________________________________
 
@@ -231,6 +276,8 @@ Long64_t AliSpectraAODEventCuts::Merge(TCollection* list)
   TList collections_histoEtaBefSel;
   TList collections_histoEtaAftSel;
   TList collections_histoNChAftSel;
+  TList collections_histoQVectorPos;
+  TList collections_histoQVectorNeg;
 
   Int_t count = 0;
 
@@ -251,6 +298,10 @@ Long64_t AliSpectraAODEventCuts::Merge(TCollection* list)
     collections_histoEtaAftSel.Add(histo_histoEtaAftSel);
     TH1F * histo_histoNChAftSel = entry->GetHistoNChAftSel();      
     collections_histoNChAftSel.Add(histo_histoNChAftSel);
+    TH1F * histo_histoQVectorPos = entry->GetHistoQVectorPos();      
+    collections_histoQVectorPos.Add(histo_histoQVectorPos);
+    TH1F * histo_histoQVectorNeg = entry->GetHistoQVectorNeg();      
+    collections_histoQVectorNeg.Add(histo_histoQVectorNeg);
     count++;
   }
   
@@ -260,40 +311,11 @@ Long64_t AliSpectraAODEventCuts::Merge(TCollection* list)
   fHistoEtaBefSel->Merge(&collections_histoEtaBefSel);
   fHistoEtaAftSel->Merge(&collections_histoEtaAftSel);
   fHistoNChAftSel->Merge(&collections_histoNChAftSel);
+  fHistoQVectorPos->Merge(&collections_histoQVectorPos);
+  fHistoQVectorNeg->Merge(&collections_histoQVectorNeg);
   
   delete iter;
 
   return count+1;
 }
 
-/// FIXME: Q vector
-// //Selection on QVector, before ANY other selection on the event
-// //Spectra MUST be normalized wrt events AFTER the selection on Qvector
-// // Can we include this in fEventCuts
-// Double_t Qx2EtaPos = 0, Qy2EtaPos = 0;
-// Double_t Qx2EtaNeg = 0, Qy2EtaNeg = 0;
-// Int_t multPos = 0;
-// Int_t multNeg = 0;
-// for(Int_t iT = 0; iT < fAOD->GetNumberOfTracks(); iT++) {
-//   AliAODTrack* aodTrack = fAOD->GetTrack(iT);
-//   if (!fTrackCuts->IsSelected(aodTrack)) continue;
-//   if (aodTrack->Eta() >= 0){
-//     multPos++;
-//     Qx2EtaPos += TMath::Cos(2*aodTrack->Phi()); 
-//     Qy2EtaPos += TMath::Sin(2*aodTrack->Phi());
-//   } else {
-//     multNeg++;
-//     Qx2EtaNeg += TMath::Cos(2*aodTrack->Phi()); 
-//     Qy2EtaNeg += TMath::Sin(2*aodTrack->Phi());
-//   }
-// } 
-// Double_t qPos=-999;
-// if(multPos!=0)qPos= TMath::Sqrt((Qx2EtaPos*Qx2EtaPos + Qy2EtaPos*Qy2EtaPos)/multPos);
-// Double_t qNeg=-999;
-// if(multNeg!=0)qNeg= TMath::Sqrt((Qx2EtaNeg*Qx2EtaNeg + Qy2EtaNeg*Qy2EtaNeg)/multNeg);
-  
-// if((qPos>fTrackCuts->GetQvecMin() && qPos<fTrackCuts->GetQvecMax()) || (qNeg>fTrackCuts->GetQvecMin() && qNeg<fTrackCuts->GetQvecMax())){
-
-//fill q distributions vs centrality, after all event selection
-// fHistMan->GetqVecHistogram(kHistqVecPos)->Fill(qPos,fAOD->GetCentrality()->GetCentralityPercentile("V0M"));  // qVector distribution
-// fHistMan->GetqVecHistogram(kHistqVecNeg)->Fill(qNeg,fAOD->GetCentrality()->GetCentralityPercentile("V0M"));  // qVector distribution
index 6b7e7800ee2baf8bdc98af89ff40ec66e27ae0a2..05dc6fe968abf98fc3f7cdb87ed50c7fa4da6428 100644 (file)
@@ -21,10 +21,10 @@ class AliSpectraAODHistoManager;
 class AliSpectraAODEventCuts : public TNamed
 {
  public:
-  enum {  kProcessedEvents = 0,kPhysSelEvents,kAcceptedEvents, kVtxRange, kVtxCentral, kVtxNoEvent, kNVtxCuts};
+  enum {  kProcessedEvents = 0,kPhysSelEvents,kAcceptedEvents, kVtxRange, kVtxCentral, kVtxNoEvent, kQVector, kNVtxCuts};
 
   // Constructors
- AliSpectraAODEventCuts() : TNamed(), fAOD(0), fIsMC(0), fUseCentPatchAOD049(0), fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),fHistoNChAftSel(0) {}
+ AliSpectraAODEventCuts() : TNamed(), fAOD(0), fIsMC(0), fUseCentPatchAOD049(0), fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fQVectorPosCutMin(0), fQVectorPosCutMax(0), fQVectorNegCutMin(0), fQVectorNegCutMax(0), fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),fHistoNChAftSel(0),fHistoQVectorPos(0),fHistoQVectorNeg(0) {}
   AliSpectraAODEventCuts(const char *name);
   virtual  ~AliSpectraAODEventCuts() {}
   
@@ -38,8 +38,11 @@ class AliSpectraAODEventCuts : public TNamed
   Bool_t IsSelected(AliAODEvent * aod,AliSpectraAODTrackCuts     *trackcuts);
   Bool_t CheckVtxRange();
   Bool_t CheckCentralityCut();
+  Bool_t CheckQVectorCut();
   void  SetCentralityCutMin(Float_t cut)  { fCentralityCutMin = cut; }
   void  SetCentralityCutMax(Float_t cut)  { fCentralityCutMax = cut; }
+  void  SetQVectorPosCut(Float_t min,Float_t max)  { fQVectorPosCutMin = min; fQVectorPosCutMax = max; }
+  void  SetQVectorNegCut(Float_t min,Float_t max)  { fQVectorNegCutMin = min; fQVectorNegCutMax = max; }
 
    
   TH1I * GetHistoCuts()         {  return fHistoCuts; }
@@ -48,8 +51,14 @@ class AliSpectraAODEventCuts : public TNamed
   TH1F * GetHistoEtaBefSel()         {  return fHistoEtaBefSel; }
   TH1F * GetHistoEtaAftSel()         {  return fHistoEtaAftSel; }
   TH1F * GetHistoNChAftSel()         {  return fHistoNChAftSel; }
+  TH1F * GetHistoQVectorPos()         {  return fHistoQVectorPos; }
+  TH1F * GetHistoQVectorNeg()         {  return fHistoQVectorNeg; }
   Float_t  GetCentralityMin()  const {  return fCentralityCutMin; }
   Float_t  GetCentralityMax()  const {  return fCentralityCutMax; }
+  Float_t  GetQVectorPosCutMin()  const {  return fQVectorPosCutMin; }
+  Float_t  GetQVectorPosCutMax()  const {  return fQVectorPosCutMax; }
+  Float_t  GetQVectorNegCutMin()  const {  return fQVectorNegCutMin; }
+  Float_t  GetQVectorNegCutMax()  const {  return fQVectorNegCutMax; }
   void   PrintCuts();
   Double_t ApplyCentralityPatchAOD049();
 
@@ -69,12 +78,18 @@ class AliSpectraAODEventCuts : public TNamed
   Bool_t          fIsSelected;        // True if cuts are selected
   Float_t         fCentralityCutMin;     // minimum centrality percentile
   Float_t         fCentralityCutMax;     // maximum centrality percentile
+  Float_t         fQVectorPosCutMin;     // minimum qvecPos
+  Float_t         fQVectorPosCutMax;     // maximum qvecPos
+  Float_t         fQVectorNegCutMin;     // minimum qvecNeg
+  Float_t         fQVectorNegCutMax;     // maximum qvecNeg
   TH1I            *fHistoCuts;        // Cuts statistics
   TH1F            *fHistoVtxBefSel;        // Vtx distr before event selection
   TH1F            *fHistoVtxAftSel;        // Vtx distr after event selection
   TH1F            *fHistoEtaBefSel;        // Eta distr before event selection
   TH1F            *fHistoEtaAftSel;        // Eta distr after event selection
   TH1F            *fHistoNChAftSel;        // NCh distr after event selection
+  TH1F            *fHistoQVectorPos;        // QVectorPos
+  TH1F            *fHistoQVectorNeg;        // QVectorNeg
   AliSpectraAODEventCuts(const AliSpectraAODEventCuts&);
   AliSpectraAODEventCuts& operator=(const AliSpectraAODEventCuts&);
   
index d96a8613ba74359000835de91009e222f5650d71..0787226527424fe8f571b7cfa2ef742dd01828f7 100644 (file)
@@ -42,8 +42,8 @@ using namespace std;
 ClassImp(AliSpectraAODTrackCuts)
 
 
-AliSpectraAODTrackCuts::AliSpectraAODTrackCuts(const char *name) : TNamed(name, "AOD Track Cuts"), fIsSelected(0), fTrackBits(0), fEtaCut(0), fDCACut(0), fPCut(0), fPtCut(0), fYCut(0),
-  fPtCutTOFMatching(0),fQvecCutMin(0),fQvecCutMax(0), fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fTrack(0)
+AliSpectraAODTrackCuts::AliSpectraAODTrackCuts(const char *name) : TNamed(name, "AOD Track Cuts"), fIsSelected(0), fTrackBits(0), fEtaCutMin(0), fEtaCutMax(0), fDCACut(0), fPCut(0), fPtCut(0), fYCut(0),
+  fPtCutTOFMatching(0), fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fTrack(0)
   
 {
   // Constructor
@@ -65,19 +65,18 @@ AliSpectraAODTrackCuts::AliSpectraAODTrackCuts(const char *name) : TNamed(name,
   fHistoEtaPhiHighPt->SetXTitle("eta");
   fHistoEtaPhiHighPt->SetYTitle("phi");
   
-  fEtaCut = 100000.0; // default value of eta cut ~ no cut
+  fEtaCutMin = -100000.0; // default value of eta cut ~ no cut
+  fEtaCutMax = 100000.0; // default value of eta cut ~ no cut
   fDCACut = 100000.0; // default value of dca cut ~ no cut
   fPCut = 100000.0; // default value of p cut ~ no cut
   fPtCut = 100000.0; // default value of pt cut ~ no cut 
   fPtCutTOFMatching=0.6; //default value fot matching with TOF
-  fQvecCutMin = -100000.0; // default value of qvec cut ~ no cut 
-  fQvecCutMax = 100000.0; // default value of qvec cut ~ no cut 
   fYCut       = 100000.0; // default value of y cut ~ no cut 
   
 }
 
 //_______________________________________________________
-Bool_t AliSpectraAODTrackCuts::IsSelected(AliAODTrack * track)
+Bool_t AliSpectraAODTrackCuts::IsSelected(AliAODTrack * track,Bool_t FillHistStat)
 {
   // Returns true if Track Cuts are selected and applied
   if (!track)
@@ -90,32 +89,32 @@ Bool_t AliSpectraAODTrackCuts::IsSelected(AliAODTrack * track)
   if(!CheckTrackType()){
     return kFALSE;
   }
-  fHistoCuts->Fill(kTrkBit);
+  if(FillHistStat)fHistoCuts->Fill(kTrkBit);
   
   if(!CheckTrackCuts()){
     return kFALSE;
   }
-  fHistoCuts->Fill(kTrkCuts);
+  if(FillHistStat)fHistoCuts->Fill(kTrkCuts);
   if(!CheckEtaCut()){
     return kFALSE;
   }
-  fHistoCuts->Fill(kTrkEta);
+  if(FillHistStat)fHistoCuts->Fill(kTrkEta);
   if(!CheckDCACut()){
     return kFALSE;
   }
-  fHistoCuts->Fill(kTrkDCA);
+  if(FillHistStat)fHistoCuts->Fill(kTrkDCA);
   if(!CheckPCut()){
     return kFALSE;
   }
-  fHistoCuts->Fill(kTrkP);
+  if(FillHistStat)fHistoCuts->Fill(kTrkP);
   if(!CheckPtCut()){
     return kFALSE;
   }
-  fHistoCuts->Fill(kTrkPt);
-  if(!CheckTOFMatching()){
+  if(FillHistStat)fHistoCuts->Fill(kTrkPt);
+  if(!CheckTOFMatching(FillHistStat)){
     return kFALSE;
   }
-  fHistoCuts->Fill(kAccepted);
+  if(FillHistStat)fHistoCuts->Fill(kAccepted);
   //Printf("-------- %d,%d",kTOFMatching,kAccepted);
   return kTRUE;
 }
@@ -132,14 +131,15 @@ Bool_t AliSpectraAODTrackCuts::CheckTrackType()
 Bool_t AliSpectraAODTrackCuts::CheckTrackCuts()
 {
   // Check additional track Cuts
-  return fTrack->HasPointOnITSLayer(0); //FIXME 1 SPD for the moment
-  
+  Bool_t HasSPD=kFALSE;
+  if (fTrack->HasPointOnITSLayer(0) || fTrack->HasPointOnITSLayer(1))HasSPD=kTRUE; //FIXME 1 SPD for the moment
+  return HasSPD;
 }
 //________________________________________________________
 Bool_t AliSpectraAODTrackCuts::CheckEtaCut()
 {
    // Check eta cut
-   if (fTrack->Eta() < fEtaCut && fTrack->Eta() > - fEtaCut) return kTRUE;
+   if (fTrack->Eta() < fEtaCutMax && fTrack->Eta() > fEtaCutMin) return kTRUE;
     return kFALSE;
 }
 
@@ -177,26 +177,26 @@ Bool_t AliSpectraAODTrackCuts::CheckPtCut()
 }
 
 //_______________________________________________________
-Bool_t AliSpectraAODTrackCuts::CheckTOFMatching()
+Bool_t AliSpectraAODTrackCuts::CheckTOFMatching(Bool_t FillHistStat)
 {
   // check Pt cut
   //    if ((fTrack->Pt() < fPtCut) && (fTrack->Pt() > 0.3 )) return kTRUE;
   
   if (fTrack->Pt() < fPtCutTOFMatching) return kTRUE;
   else{
-    fHistoCuts->Fill(kTrkPtTOF);
+    if(FillHistStat)fHistoCuts->Fill(kTrkPtTOF);
     if(fTrack->Charge()>0)fHistoNSelectedPos->Fill(fTrack->Pt());
     else fHistoNSelectedNeg->Fill(fTrack->Pt());
     UInt_t status; 
     status=fTrack->GetStatus();
-    if((status&AliAODTrack::kTOFout))fHistoCuts->Fill(kTrTOFout);
-    if((status&AliAODTrack::kTIME))fHistoCuts->Fill(kTrTIME);
-    if((status&AliAODTrack::kTOFpid))fHistoCuts->Fill(kTrTOFpid);
+    if((status&AliAODTrack::kTOFout)&&FillHistStat)fHistoCuts->Fill(kTrTOFout);
+    if((status&AliAODTrack::kTIME)&&FillHistStat)fHistoCuts->Fill(kTrTIME);
+    if((status&AliAODTrack::kTOFpid)&&FillHistStat)fHistoCuts->Fill(kTrTOFpid);
     
     if((status&AliAODTrack::kTOFout)==0 || (status&AliAODTrack::kTIME)==0){//kTOFout and kTIME
       return kFALSE; 
     } 
-    fHistoCuts->Fill(kTOFMatching);
+    if(FillHistStat)fHistoCuts->Fill(kTOFMatching);
     if(fTrack->Charge()>0)fHistoNMatchedPos->Fill(fTrack->Pt());
     else fHistoNMatchedNeg->Fill(fTrack->Pt());
     if(fTrack->Pt()>1.5){
@@ -217,12 +217,10 @@ void AliSpectraAODTrackCuts::PrintCuts() const
   // Print cuts
     cout << "Track Cuts" << endl;
     cout << " > TrackBit\t" << fTrackBits << endl;
-    cout << " > Eta cut\t" << fEtaCut << endl;
+    cout << " > Eta cut\t" << fEtaCutMin <<","<< fEtaCutMax << endl;
     cout << " > DCA cut\t" << fDCACut << endl;
     cout << " > P cut\t" << fPCut << endl;
     cout << " > Pt cut \t" << fPtCut << endl;
-    cout << " > Q vactor Min \t" << fQvecCutMin << endl;
-    cout << " > Q vactor Max \t" << fQvecCutMax << endl;
 }
 //_______________________________________________________
 void AliSpectraAODTrackCuts::SetTrackType(UInt_t bit)
index 334f0256a6d77dd5c2e5a56e15f8eeb3bdbf973f..c4f5e2b1130eb90f62052f92f8494ea036efc726 100644 (file)
@@ -40,12 +40,12 @@ class AliSpectraAODTrackCuts : public TNamed
   enum { kTrkBit = 0, kTrkCuts, kTrkEta, kTrkDCA, kTrkP, kTrkPt,kTrkPtTOF,kTOFMatching,kTrTOFout,kTrTIME,kTrTOFpid,kAccepted,kNTrkCuts};
   
   
- AliSpectraAODTrackCuts() : TNamed(), fIsSelected(0), fTrackBits(0), fEtaCut(0), fPCut(0), fPtCut(0), fPtCutTOFMatching(0), fQvecCutMin(0), fQvecCutMax(0), fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fTrack(0) {}
+ AliSpectraAODTrackCuts() : TNamed(), fIsSelected(0), fTrackBits(0), fEtaCutMin(0), fEtaCutMax(0), fPCut(0), fPtCut(0), fPtCutTOFMatching(0), fHistoCuts(0), fHistoNSelectedPos(0), fHistoNSelectedNeg(0), fHistoNMatchedPos(0), fHistoNMatchedNeg(0), fHistoEtaPhiHighPt(0), fTrack(0) {}
   
   AliSpectraAODTrackCuts(const char *name);
   virtual  ~AliSpectraAODTrackCuts() {} // To be implemented
   
-  Bool_t IsSelected(AliAODTrack * track);
+  Bool_t IsSelected(AliAODTrack * track,Bool_t FillHistStat);
   
   void SetTrackType(UInt_t bit);
   Bool_t CheckTrackType();
@@ -55,7 +55,7 @@ class AliSpectraAODTrackCuts : public TNamed
   Bool_t CheckDCACut();
   Bool_t CheckPCut();
   Bool_t CheckPtCut();
-  Bool_t CheckTOFMatching();
+  Bool_t CheckTOFMatching(Bool_t FillHistStat);
   void PrintCuts() const;
   
    UInt_t GetTrackType()  const    { return fTrackBits; }
@@ -65,23 +65,20 @@ class AliSpectraAODTrackCuts : public TNamed
    TH1F * GetHistoNMatchedPos()      { return fHistoNMatchedPos; }
    TH1F * GetHistoNMatchedNeg()      { return fHistoNMatchedNeg; }
    TH2F * GetHistoEtaPhiHighPt()      { return fHistoEtaPhiHighPt; }
-   void SetEta(Float_t eta)   { fEtaCut = eta; }
+   void SetEta(Float_t etamin,Float_t etamax)   { fEtaCutMin = etamin;fEtaCutMax = etamax; }
    void SetDCA(Float_t dca)   { fDCACut = dca; }
    void SetP(Float_t p)       { fPCut = p; }
    void SetPt(Float_t pt)     { fPtCut = pt; }
    void SetY(Float_t y) { fYCut = y;}
    void SetPtTOFMatching(Float_t pt)     { fPtCutTOFMatching = pt; }
-   void SetQvecMin(Float_t qvecmin)     { fQvecCutMin = qvecmin; }
-   void SetQvecMax(Float_t qvecmax)     { fQvecCutMax = qvecmax; }
    void SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
-   Float_t GetEta()       const    { return fEtaCut; }
+   Float_t GetEtaMin()       const    { return fEtaCutMin; }
+   Float_t GetEtaMax()       const    { return fEtaCutMax; }
    Float_t GetY()         const    { return fYCut; }
    Float_t GetDCA()       const    { return fDCACut; }
    Float_t GetP()         const    { return fPCut; }
    Float_t GetPt()        const    { return fPtCut; }
    Float_t GetPtTOFMatching()        const    { return fPtCutTOFMatching; }
-   Float_t GetQvecMin()        const    { return fQvecCutMin; }
-   Float_t GetQvecMax()        const    { return fQvecCutMax; }
     
    Long64_t Merge(TCollection* list);
    
@@ -90,14 +87,13 @@ class AliSpectraAODTrackCuts : public TNamed
    
    Bool_t           fIsSelected;      // True if cuts are selected
    UInt_t           fTrackBits;       // Type of track to be used
-   Float_t          fEtaCut;          // Allowed absolute maximum value of Eta
+   Float_t          fEtaCutMin;          // Allowed absolute maximum value of Eta
+   Float_t          fEtaCutMax;          // Allowed absolute maximum value of Eta
    Float_t          fDCACut;          // Maximum value of DCA
    Float_t          fPCut;            // Maximum value of P
    Float_t          fPtCut;           // Maximum value of Pt
    Float_t          fYCut;           // Maximum value of Y
    Float_t          fPtCutTOFMatching;           // TOF Matching
-   Float_t          fQvecCutMin;           // Minimum value of Qvec
-   Float_t          fQvecCutMax;           // Minimum value of Qvec
    TH1I             *fHistoCuts;       // Cuts statistics
    TH1F             *fHistoNSelectedPos;       // Selected positive tracks
    TH1F             *fHistoNSelectedNeg;       // Selected negative tracks
index 8895c9a1283e8c5b3ac175f80b4fd92687f75650..9c2202f5ede9baecff194564df87184b6faab500 100644 (file)
@@ -38,27 +38,39 @@ void MainAnalysis()  {
   gSystem->Load("libPWGTools");
   gSystem->Load("libPWGLFSPECTRA");
   gSystem->AddIncludePath("-I$ALICE_ROOT/include");
+  
   // Set Masses
   Double_t mass[3];
   mass[0]   = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
   mass[1]   = TDatabasePDG::Instance()->GetParticle("K+")->Mass();
   mass[2] = TDatabasePDG::Instance()->GetParticle("proton")->Mass();
   
-  //TString fold="3SigmaPID_AOD048-049_FilterBit5";
-  TString fold="3SigmaPID_AOD048-049_FilterBit1";
-  //TString fold="3SigmaPID_AOD086-090_FilterBit10";
-  //TString fold="3SigmaPID_AOD086-090_FilterBit7";
-  //TString fold="3SigmaPID_AOD086-090_FilterBit1";
-  Int_t ibinToCompare=-1;
+  TString fold="3SigmaPID_AOD086-090_FilterBit1";
   
-  TString sname="Cent0to5_QVec0.0to100.0";ibinToCompare=0;
-  //TString sname="Cent0to100_QVec0.0to100.0";ibinToCompare=0;
+  //LOOP OVER SELECTION
+  Double_t CentCutMin[4]={0,0,20,20};
+  Double_t CentCutMax[4]={100,5,40,40};
+  Double_t QvecPosCutMin[4]={0,0,0,3};
+  Double_t QvecPosCutMax[4]={100,100,2,100};
+  Double_t QvecNegCutMin[4]={0,0,0,3};
+  Double_t QvecNegCutMax[4]={100,100,2,100};
+  Double_t EtaMin[4]={-0.8,-0.8,-0.8,-0.8};
+  Double_t EtaMax[4]={0.8,0.8,0.8,0.8};
+  
+  Int_t icut=1;
+  
+  Int_t ibinToCompare=0;
+  
+  TString sname=Form("Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f",CentCutMin[icut],CentCutMax[icut],QvecPosCutMin[icut],QvecPosCutMax[icut],QvecNegCutMin[icut],QvecNegCutMax[icut],EtaMin[icut],EtaMax[icut]);
   
-  TString dataFile = Form("output/%s/Pt.AOD.1._data_ptcut_%s.root",fold.Data(),sname.Data());
-  TString mcFile =Form("output/%s/Pt.AOD.1._MC_%s.root",fold.Data(),sname.Data());
-  gStyle->SetPalette(1);
   
+  TString dataFile = Form("output/%s/OutputAODSpectraTask_data_%s.root",fold.Data(),sname.Data());
+  TString mcFile = Form("output/%s/OutputAODSpectraTask_mc_%s.root",fold.Data(),sname.Data());
+  
+  
+  
+  
+  gStyle->SetPalette(1);
   // Open root MC file and get classes
   cout << "Analysis Macro" << endl;
   cout << "  > Reading MC data" << endl;
@@ -350,7 +362,7 @@ void MainAnalysis()  {
   //Printf("--------%f ",((TH1F*)hman_mc->GetPtHistogram1D("hHistPtGen",1,1))->GetEntries()/1.6/ecuts_mc->NumberOfEvents());
   hChHad_data->Scale(1./events_data,"width");//NORMALIZATION
   hChHad_data->Divide(hEff_mc);//Efficiency
-  hChHad_data->Scale(1./(2*tcuts_data->GetEta()));
+  hChHad_data->Scale(1./1.6);
   hChHad_data->SetTitle("All Ch from AOD");
   TCanvas *cAllCh=new TCanvas("cAllCh","cAllCh",700,500);
   cAllCh->Divide(1,2);
index c704f7371a1e01c0fe0cb2a019165c185ab1bbbc..3d0cd84e983df98881b44f4f03b3a6b1c61b1adb 100644 (file)
@@ -77,6 +77,39 @@ void QAPlots( AliSpectraAODHistoManager* hman_data, AliSpectraAODHistoManager* h
   hNChAft_mc->DrawClone("lhistsame");
   gPad->BuildLegend()->SetFillColor(0);
 
+  
+  //Nch distr in data and MC before and after event selection
+  TCanvas *cQVector=new TCanvas("QVectordistr","QVectordistr",700,500);
+  cQVector->Divide(1,2);
+  cQVector->cd(1);
+  gPad->SetGridy();
+  gPad->SetGridx();
+  TH1F *hQVector_data=ecuts_data->GetHistoQVectorPos();
+  hQVector_data->Scale(1./hQVector_data->GetEntries());
+  hQVector_data->SetTitle(Form("%s - data",hQVector_data->GetTitle()));
+  TH1F *hQVector_mc=ecuts_mc->GetHistoQVectorPos();
+  hQVector_mc->Scale(1./hQVector_mc->GetEntries());
+  hQVector_mc->SetTitle(Form("%s - mc",hQVector_mc->GetTitle()));
+  hQVector_mc->SetLineColor(2);
+  hQVector_data->DrawClone("lhist");
+  hQVector_mc->DrawClone("lhistsame");
+  gPad->BuildLegend()->SetFillColor(0);
+  cQVector->cd(2);
+  gPad->SetGridy();
+  gPad->SetGridx();
+  TH1F *hQVector_data=ecuts_data->GetHistoQVectorNeg();
+  hQVector_data->Scale(1./hQVector_data->GetEntries());
+  hQVector_data->SetTitle(Form("%s - data",hQVector_data->GetTitle()));
+  TH1F *hQVector_mc=ecuts_mc->GetHistoQVectorNeg();
+  hQVector_mc->Scale(1./hQVector_mc->GetEntries());
+  hQVector_mc->SetTitle(Form("%s - mc",hQVector_mc->GetTitle()));
+  hQVector_mc->SetLineColor(2);
+  hQVector_data->DrawClone("lhist");
+  hQVector_mc->DrawClone("lhistsame");
+  gPad->BuildLegend()->SetFillColor(0);
+  
+  
+  
   //Eta Phi at high Pt in data and Monte Carlo
   TCanvas *cEtaPhi=new TCanvas("EtaPhi","EtaPhi",700,500);
   cEtaPhi->Divide(2,1);
index 66a88710ecf21efa75584142d9dc679d0cffee01..09e3ab93a9ad86853d1a9c212ec5eca18cf733da 100644 (file)
@@ -1,4 +1,4 @@
-void runAODProof(Int_t c=2, const char * proofMode = "full")
+void runAODProof(Int_t c=4, const char * proofMode = "full")
 { //1 data AOD049
   //2 MC AOD048
   //3 data AOD086
@@ -38,7 +38,7 @@ void runAODProof(Int_t c=2, const char * proofMode = "full")
   }
   if (c == 2){
     //handler->SetProofDataSet("/alice/sim/LHC11a10a_000138653_AOD048#aodTree|/alice/sim/LHC11a10a_000138662_AOD048#aodTree|/alice/sim/LHC11a10a_000138666_AOD048#aodTree|/alice/sim/LHC11a10a_000138795_AOD048#aodTree|/alice/sim/LHC11a10a_000139107_AOD048#aodTree|/alice/sim/LHC11a10a_000139110_AOD048#aodTree");      
-  handler->SetProofDataSet("/default/lmilano/LHC11a10a_138653_AOD048#aodTree|/default/lmilano/LHC11a10a_138662_AOD048#aodTree|/default/lmilano/LHC11a10a_138666_AOD048#aodTree|/default/lmilano/LHC11a10a_138730_AOD048#aodTree|/default/lmilano/LHC11a10a_138732_AOD048#aodTree|/default/lmilano/LHC11a10a_139507_AOD048#aodTree|/default/lmilano/LHC11a10a_139465_AOD048#aodTree|/default/lmilano/LHC11a10a_139437_AOD048#aodTree|/default/lmilano/LHC11a10a_139107_AOD048#aodTree|/default/lmilano/LHC11a10a_139510_AOD048#aodTree");      
+    handler->SetProofDataSet("/default/lmilano/LHC11a10a_138653_AOD048#aodTree|/default/lmilano/LHC11a10a_138662_AOD048#aodTree|/default/lmilano/LHC11a10a_138666_AOD048#aodTree|/default/lmilano/LHC11a10a_138730_AOD048#aodTree|/default/lmilano/LHC11a10a_138732_AOD048#aodTree|/default/lmilano/LHC11a10a_139507_AOD048#aodTree|/default/lmilano/LHC11a10a_139465_AOD048#aodTree|/default/lmilano/LHC11a10a_139437_AOD048#aodTree|/default/lmilano/LHC11a10a_139107_AOD048#aodTree|/default/lmilano/LHC11a10a_139510_AOD048#aodTree");      
   }
   if (c == 3){
     //handler->SetProofDataSet("/default/lmilano/LHC10h_000138653_AOD086_p2#aodTree|/default/lmilano/LHC10h_000138662_AOD086_p2#aodTree|/default/lmilano/LHC10h_000138666_AOD086_p2#aodTree|/default/lmilano/LHC10h_000139107_AOD086_p2#aodTree|/default/lmilano/LHC10h_000138275_AOD086_p2#aodTree");      
@@ -81,12 +81,12 @@ void runAODProof(Int_t c=2, const char * proofMode = "full")
   //LOOP OVER SELECTION
   Double_t CentCutMin[4]={0,0,20,20};
   Double_t CentCutMax[4]={100,5,40,40};
-  Double_t QvecCutMin[4]={0,0,0,3};
-  Double_t QvecCutMax[4]={100,100,2,100};
-  // Double_t CentCutMin[4]={5,10,20,30};
-  // Double_t CentCutMax[4]={10,20,30,40};
-  // Double_t QvecCutMin[4]={0,0,0,0};
-  // Double_t QvecCutMax[4]={100,100,100,100};
+  Double_t QvecPosCutMin[4]={0,0,0,3};
+  Double_t QvecPosCutMax[4]={100,100,2,100};
+  Double_t QvecNegCutMin[4]={0,0,0,3};
+  Double_t QvecNegCutMax[4]={100,100,2,100};
+  Double_t EtaMin[4]={-0.8,-0.8,-0.8,-0.8};
+  Double_t EtaMax[4]={0.8,0.8,0.8,0.8};
   using namespace AliSpectraNameSpace;
   AliSpectraAODPID *pid = new AliSpectraAODPID(kNSigmaTPCTOF); 
   pid->SetNSigmaCut(3.);
@@ -108,13 +108,14 @@ void runAODProof(Int_t c=2, const char * proofMode = "full")
     //if(c==3 || c==4)tcuts->SetTrackType(7); //AOD 086 & 090. TPC Only
     tcuts->SetTrackBits(1);
     Printf("\n\n\n\n\n\n\n-------------------- tcuts->GetTrackType() %d \n\n\n\n\n\n\n",tcuts->GetTrackType());
-    tcuts->SetEta(.8);
     //tcuts->SetDCA(.1);
     tcuts->SetPt(5);
     tcuts->SetY(.5);
     tcuts->SetPtTOFMatching(.6);   
-    tcuts->SetQvecMin(QvecCutMin[iCut]);   
-    tcuts->SetQvecMax(QvecCutMax[iCut]);    
+    //cut on qvector and eta
+    vcuts->SetQVectorPosCut(QvecPosCutMin[iCut],QvecPosCutMax[iCut]);
+    vcuts->SetQVectorNegCut(QvecNegCutMin[iCut],QvecNegCutMax[iCut]);
+    tcuts->SetEta(EtaMin[iCut],EtaMax[iCut]);
     if(c==1)vcuts->SetUseCentPatchAOD049(kTRUE);
     vcuts->SetCentralityCutMax(CentCutMax[iCut]);  
     vcuts->SetCentralityCutMin(CentCutMin[iCut]);
@@ -122,7 +123,7 @@ void runAODProof(Int_t c=2, const char * proofMode = "full")
     task->SetTrackCuts(tcuts);
     vcuts->PrintCuts();
     tcuts->PrintCuts();
-     
+    
     // check for MC or real data
     if (c == 2 || c == 4)
       {
@@ -130,25 +131,33 @@ void runAODProof(Int_t c=2, const char * proofMode = "full")
        vcuts->SetIsMC(kTRUE);
        AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
        AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
+                                                                   Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
        AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
-       AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
+                                                                   Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+               AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
+                                                                   Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
        AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut),  AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
+                                                                  Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
       }
     if (c == 1 || c==3)
       {
        AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
        AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
+                                                                   Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
        AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
+                                                                 Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
        AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
+                                                                 Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
        AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut),  AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                                   Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCutMin[iCut],CentCutMax[iCut],QvecCutMin[iCut],QvecCutMax[iCut]));
+                                                                 Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
         
       }
     mgr->ConnectInput(task, 0, cinput);
index a673ff3af8b870ec3676fbd05fb1cf498447dab5..b81c091fcd5020f4626f1092262aec2bfd80701e 100644 (file)
@@ -48,182 +48,197 @@ void runGrid(TString mode="test",Int_t mc=0,Int_t sub=1,Int_t hi=1,TString fname
   AliAnalysisTask * taskPID = AddTaskPIDResponse(mc);
   //mgr->AddTask(taskPID);
   
-  //setting the analysis
-  Int_t iCut=0;
-  //Double_t CentCut[2]={0,100};
-  Double_t CentCut[2]={0,100};
-  Double_t qVecCut[2]={0,100};
-   
-  //PID object
+   //LOOP OVER SELECTION
+  Double_t CentCutMin[4]={0,0,20,20};
+  Double_t CentCutMax[4]={100,5,40,40};
+  Double_t QvecPosCutMin[4]={0,0,0,3};
+  Double_t QvecPosCutMax[4]={100,100,2,100};
+  Double_t QvecNegCutMin[4]={0,0,0,3};
+  Double_t QvecNegCutMax[4]={100,100,2,100};
+  Double_t EtaMin[4]={-0.8,-0.8,-0.8,-0.8};
+  Double_t EtaMax[4]={0.8,0.8,0.8,0.8};
   using namespace AliSpectraNameSpace;
   AliSpectraAODPID *pid = new AliSpectraAODPID(kNSigmaTPCTOF); 
   pid->SetNSigmaCut(3.);
-  
-  AliAnalysisTaskSpectraAOD *task = new AliAnalysisTaskSpectraAOD("TaskAODExercise");
-  mgr->AddTask(task);
-  //physics selection
-  task->SelectCollisionCandidates();   //don't need to add the task on AOD
-  
-  // Set the cuts
-  AliSpectraAODEventCuts * vcuts = new AliSpectraAODEventCuts("Event Cuts");
-  AliSpectraAODTrackCuts  * tcuts = new AliSpectraAODTrackCuts("Track Cuts");
-  //if(sub==0){
-    //tcuts->SetTrackType(5); //AOD 046 & 047. Standard Cuts with loose DCA
-    //tcuts->SetTrackType(6); //AOD 046 & 047. Standard Cuts with tight DCA
-  //}
-  //if(sub==1)tcuts->SetTrackType(10); //AOD 086 & 090. Standard Raa cuts
-  tcuts->SetTrackBits(1); 
-  
-  // set pid object
-  task->SetPID(pid);
-  tcuts->SetEta(.8);
-  tcuts->SetPt(5);
-  tcuts->SetY(.5);
-  tcuts->SetPtTOFMatching(0.6);   
-  tcuts->SetQvecMin(qVecCut[0]);   
-  tcuts->SetQvecMax(qVecCut[1]);    
-  if(sub==0 && mc==0)vcuts->SetUseCentPatchAOD049(1);
-  vcuts->SetCentralityCutMin(CentCut[0]);
-  vcuts->SetCentralityCutMax(CentCut[1]);  
-  task->SetEventCuts(vcuts);
-  task->SetTrackCuts(tcuts);
-  vcuts->PrintCuts();
-  tcuts->PrintCuts();
-  
-  if (mc)
-    {
-      task->SetIsMC(kTRUE);
-      vcuts->SetIsMC(kTRUE);
-      AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
-      AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
-                                                                 Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
-      AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
-                                                                 Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
-      AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                                 Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
-      AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut), AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                                 Form("Pt.AOD.1._MC_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
-    }else{      
-    AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
-    AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
-                                                               Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
-    AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
-                                                               Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
-    AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                               Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
-    AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut), AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
-                                                               Form("Pt.AOD.1._data_ptcut_Cent%.0fto%.0f_QVec%.1fto%.1f.root",CentCut[0],CentCut[1],qVecCut[0],qVecCut[1]));
+   
+  for(Int_t iCut=1;iCut<2;iCut++){
+    AliAnalysisTaskSpectraAOD *task = new AliAnalysisTaskSpectraAOD("TaskAODExercise");
+    mgr->AddTask(task);
+    //physics selection
+    task->SelectCollisionCandidates();     
+    // set pid object
+    task->SetPID(pid);
+    // Set the cuts
+    AliSpectraAODEventCuts * vcuts = new AliSpectraAODEventCuts("Event Cuts");
+    AliSpectraAODTrackCuts  * tcuts = new AliSpectraAODTrackCuts("Track Cuts");
+    //if(c==1 || c==2)tcuts->SetTrackType(5); //AOD 046 & 047. Standard Cut with loose DCA
+    //if(c==1 || c==2)tcuts->SetTrackType(6); //AOD 046 & 047. Standard Cut with tight DCA
+    //if(c==3 || c==4)tcuts->SetTrackType(10); //AOD 086 & 090. Standard Raa cut
+    //if(c==3 || c==4)tcuts->SetTrackType(4); //AOD 086 & 090. Jet analysis
+    //if(c==3 || c==4)tcuts->SetTrackType(7); //AOD 086 & 090. TPC Only
+    tcuts->SetTrackBits(1);
+    Printf("\n\n\n\n\n\n\n-------------------- tcuts->GetTrackType() %d \n\n\n\n\n\n\n",tcuts->GetTrackType());
+    //tcuts->SetDCA(.1);
+    tcuts->SetPt(5);
+    tcuts->SetY(.5);
+    tcuts->SetPtTOFMatching(.6);   
+    //cut on qvector and eta
+    vcuts->SetQVectorPosCut(QvecPosCutMin[iCut],QvecPosCutMax[iCut]);
+    vcuts->SetQVectorNegCut(QvecNegCutMin[iCut],QvecNegCutMax[iCut]);
+    tcuts->SetEta(EtaMin[iCut],EtaMax[iCut]);
+    if(sub==0 && mc==0)vcuts->SetUseCentPatchAOD049(kTRUE);
+    vcuts->SetCentralityCutMax(CentCutMax[iCut]);  
+    vcuts->SetCentralityCutMin(CentCutMin[iCut]);
+    task->SetEventCuts(vcuts);
+    task->SetTrackCuts(tcuts);
+    vcuts->PrintCuts();
+    tcuts->PrintCuts();
+    
+    // check for MC or real data
+    if (mc)
+      {
+       task->SetIsMC(kTRUE);
+       vcuts->SetIsMC(kTRUE);
+       AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
+       AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
+                                                                   Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+       AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
+                                                                   Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+               AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
+                                                                   Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+       AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut),  AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
+                                                                  Form("OutputAODSpectraTask_mc_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+      }
+    else  {
+       AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
+       AliAnalysisDataContainer *coutputpt1 = mgr->CreateContainer(Form("chistpt%d",iCut), AliSpectraAODHistoManager::Class(),  AliAnalysisManager::kOutputContainer, 
+                                                                   Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+       AliAnalysisDataContainer *coutputpt2 = mgr->CreateContainer(Form("cvcutpt%d",iCut), AliSpectraAODEventCuts::Class(),    AliAnalysisManager::kOutputContainer, 
+                                                                 Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+       AliAnalysisDataContainer *coutputpt3 = mgr->CreateContainer(Form("ctcutpt%d",iCut), AliSpectraAODTrackCuts::Class(),     AliAnalysisManager::kOutputContainer, 
+                                                                 Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+       AliAnalysisDataContainer *coutputpt4 = mgr->CreateContainer(Form("cpidpt%d",iCut),  AliSpectraAODPID::Class(),     AliAnalysisManager::kOutputContainer, 
+                                                                 Form("OutputAODSpectraTask_data_Cent%.0fto%.0f_QVecPos%.1fto%.1f_QVecNeg%.1fto%.1f_Eta%.1fto%.1f.root",vcuts->GetCentralityMin(),vcuts->GetCentralityMax(),
+                                                                        vcuts->GetQVectorPosCutMin(), vcuts->GetQVectorPosCutMax(),vcuts->GetQVectorNegCutMin(), vcuts->GetQVectorNegCutMax(),tcuts->GetEtaMin(),tcuts->GetEtaMax()));
+        
+      }
+    mgr->ConnectInput(task, 0, cinput);
+    mgr->ConnectOutput(task, 1, coutputpt1);
+    mgr->ConnectOutput(task, 2, coutputpt2);
+    mgr->ConnectOutput(task, 3, coutputpt3);
+    mgr->ConnectOutput(task, 4, coutputpt4);
   }
-  mgr->ConnectInput(task, 0, cinput);
-  mgr->ConnectOutput(task, 1, coutputpt1);
-  mgr->ConnectOutput(task, 2, coutputpt2);
-  mgr->ConnectOutput(task, 3, coutputpt3);
-  mgr->ConnectOutput(task, 4, coutputpt4);
-  
   mgr->SetDebugLevel(2);
-  
-  //mgr->Init();
-  if (!mgr->InitAnalysis())return;
-  mgr->PrintStatus();
-  // Start analysis in grid.
-  mgr->StartAnalysis("grid");
-}
+    //mgr->Init();
+    if (!mgr->InitAnalysis())return;
+    mgr->PrintStatus();
+    // Start analysis in grid.
+    mgr->StartAnalysis("grid");
+  }
 
 
-AliAnalysisGrid* CreateAlienHandler(TString mode="test",Int_t mc=1,Int_t sub=0,TString fname){
+  AliAnalysisGrid* CreateAlienHandler(TString mode="test",Int_t mc=1,Int_t sub=0,TString fname){
   
   
   
-  AliAnalysisAlien *plugin = new AliAnalysisAlien();
-  plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF");
-  plugin->SetAdditionalLibs("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODHistoManager.h AliSpectraAODTrackCuts.cxx AliSpectraAODTrackCuts.h AliSpectraAODEventCuts.cxx AliSpectraAODEventCuts.h AliSpectraAODPID.cxx AliSpectraAODPID.h AliAnalysisTaskSpectraAOD.cxx AliAnalysisTaskSpectraAOD.h");
-  plugin->SetAnalysisSource("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODTrackCuts.cxx AliSpectraAODEventCuts.cxx AliSpectraAODPID.cxx AliAnalysisTaskSpectraAOD.cxx");
-  plugin->SetOverwriteMode();
-  plugin->SetExecutableCommand("aliroot -q -b");  
-  plugin->SetRunMode(mode.Data());
-  plugin->SetNtestFiles(1);
-  //Set versions of used packages
-  plugin->SetAPIVersion("V1.1x");
-  plugin->SetROOTVersion("v5-33-02b");
-  plugin->SetAliROOTVersion("v5-04-25-AN");
-  // Declare input data to be processed.
-  if(sub==0){
-  if(mc)
-    {
-      plugin->SetGridDataDir("/alice/sim/LHC11a10a");
-      plugin->SetDataPattern("AOD048/*AliAOD.root");
-      plugin->SetRunPrefix(""); 
-      plugin->SetAnalysisMacro(Form("TaskAOD046PbPbMC%d.C",sub));
-      plugin->SetExecutable(Form("TaskAOD046PbPbMC%d.sh",sub));
-      plugin->SetJDLName(Form("TaskAOD046PbPbMC%d.jdl",sub));
-      //plugin->SetSplitMaxInputFileNumber(500);
-      plugin->SetGridWorkingDir(Form("%s/AOD048-049Filter5/mc%d/",fname.Data(),sub));
-    }  
-  else
-    {
-      plugin->SetGridDataDir("/alice/data/2010/LHC10h");
-      plugin->SetDataPattern("ESDs/pass2/AOD049/*AliAOD.root");
-      plugin->SetRunPrefix("000"); 
-      plugin->SetAnalysisMacro(Form("TaskAOD046PbPbdata%d.C",sub));
-      plugin->SetExecutable(Form("TaskAOD046PbPbdata%d.sh",sub));
-      plugin->SetJDLName(Form("TaskAOD046PbPbdata%d.jdl",sub));
-      //plugin->SetSplitMaxInputFileNumber(500);
-      plugin->SetGridWorkingDir(Form("%s/AOD048-049Filter5/data%d/",fname.Data(),sub));
-    }  
-  FILE* listruns=fopen("RunListGrid-AOD046.txt","r");
-  }
-  if(sub==1){
-    if(mc)
-      {
-       plugin->SetGridDataDir("/alice/sim/LHC11a10a_bis");
-       plugin->SetDataPattern("AOD090/*AliAOD.root");
-       plugin->SetRunPrefix(""); 
-       plugin->SetAnalysisMacro(Form("TaskAOD086PbPbMC%d.C",sub));
-       plugin->SetExecutable(Form("TaskAOD086PbPbMC%d.sh",sub));
-       plugin->SetJDLName(Form("TaskAOD086PbPbMC%d.jdl",sub));
-       //plugin->SetSplitMaxInputFileNumber(500);
-       plugin->SetGridWorkingDir(Form("%s/AOD086-090Filter10/mc%d/",fname.Data(),sub));
-      }  
-    else
-      {
-       plugin->SetGridDataDir("/alice/data/2010/LHC10h");
-       plugin->SetDataPattern("ESDs/pass2/AOD086/*AliAOD.root");
-       plugin->SetRunPrefix("000"); 
-       plugin->SetAnalysisMacro(Form("TaskAOD086PbPbdata%d.C",sub));
-       plugin->SetExecutable(Form("TaskAOD086PbPbdata%d.sh",sub));
-       plugin->SetJDLName(Form("TaskAOD086PbPbdata%d.jdl",sub));
-       //plugin->SetSplitMaxInputFileNumber(500);
-       plugin->SetGridWorkingDir(Form("%s/AOD086-090Filter10/data%d/",fname.Data(),sub));
-          }  
-    FILE* listruns=fopen("RunListGrid-AOD086.txt","r");
-  }
-  Int_t irun;
-  while(!feof(listruns)){
-    fscanf(listruns,"%d\n",&irun);
-    plugin->AddRunNumber(irun);
-  }
-  // Declare alien output directory. Relative to working directory.
-  //plugin->SetGridOutputDir("/alice/cern.ch/user/l/lmilano/AODAnalysis/AOD086TrackBit10/mc1/output/000/Stage_1"); // In this case will be $HOME/work/output
-  plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
-  plugin->SetNrunsPerMaster(60); // 
+    AliAnalysisAlien *plugin = new AliAnalysisAlien();
+    plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/TOF");
+    plugin->SetAdditionalLibs("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODHistoManager.h AliSpectraAODTrackCuts.cxx AliSpectraAODTrackCuts.h AliSpectraAODEventCuts.cxx AliSpectraAODEventCuts.h AliSpectraAODPID.cxx AliSpectraAODPID.h AliAnalysisTaskSpectraAOD.cxx AliAnalysisTaskSpectraAOD.h");
+    plugin->SetAnalysisSource("Histograms.h HistogramNames.h AliSpectraAODHistoManager.cxx AliSpectraAODTrackCuts.cxx AliSpectraAODEventCuts.cxx AliSpectraAODPID.cxx AliAnalysisTaskSpectraAOD.cxx");
+    plugin->SetOverwriteMode();
+    plugin->SetExecutableCommand("aliroot -q -b");  
+    plugin->SetRunMode(mode.Data());
+    plugin->SetNtestFiles(1);
+    //Set versions of used packages
+    plugin->SetAPIVersion("V1.1x");
+    plugin->SetROOTVersion("v5-33-02b");
+    plugin->SetAliROOTVersion("v5-04-25-AN");
+    // Declare input data to be processed.
+    if(sub==0){
+      if(mc)
+       {
+         plugin->SetGridDataDir("/alice/sim/LHC11a10a");
+         plugin->SetDataPattern("AOD048/*AliAOD.root");
+         plugin->SetRunPrefix(""); 
+         plugin->SetAnalysisMacro(Form("TaskAOD046PbPbMC%d.C",sub));
+         plugin->SetExecutable(Form("TaskAOD046PbPbMC%d.sh",sub));
+         plugin->SetJDLName(Form("TaskAOD046PbPbMC%d.jdl",sub));
+         //plugin->SetSplitMaxInputFileNumber(500);
+         plugin->SetGridWorkingDir(Form("%s/AOD048-049Filter5/mc%d/",fname.Data(),sub));
+       }  
+      else
+       {
+         plugin->SetGridDataDir("/alice/data/2010/LHC10h");
+         plugin->SetDataPattern("ESDs/pass2/AOD049/*AliAOD.root");
+         plugin->SetRunPrefix("000"); 
+         plugin->SetAnalysisMacro(Form("TaskAOD046PbPbdata%d.C",sub));
+         plugin->SetExecutable(Form("TaskAOD046PbPbdata%d.sh",sub));
+         plugin->SetJDLName(Form("TaskAOD046PbPbdata%d.jdl",sub));
+         //plugin->SetSplitMaxInputFileNumber(500);
+         plugin->SetGridWorkingDir(Form("%s/AOD048-049Filter5/data%d/",fname.Data(),sub));
+       }  
+      FILE* listruns=fopen("RunListGrid-AOD046.txt","r");
+    }
+    if(sub==1){
+      if(mc)
+       {
+         plugin->SetGridDataDir("/alice/sim/LHC11a10a_bis");
+         plugin->SetDataPattern("AOD090/*AliAOD.root");
+         plugin->SetRunPrefix(""); 
+         plugin->SetAnalysisMacro(Form("TaskAOD086PbPbMC%d.C",sub));
+         plugin->SetExecutable(Form("TaskAOD086PbPbMC%d.sh",sub));
+         plugin->SetJDLName(Form("TaskAOD086PbPbMC%d.jdl",sub));
+         //plugin->SetSplitMaxInputFileNumber(500);
+         plugin->SetGridWorkingDir(Form("%s/AOD086-090Filter10/mc%d/",fname.Data(),sub));
+       }  
+      else
+       {
+         plugin->SetGridDataDir("/alice/data/2010/LHC10h");
+         plugin->SetDataPattern("ESDs/pass2/AOD086/*AliAOD.root");
+         plugin->SetRunPrefix("000"); 
+         plugin->SetAnalysisMacro(Form("TaskAOD086PbPbdata%d.C",sub));
+         plugin->SetExecutable(Form("TaskAOD086PbPbdata%d.sh",sub));
+         plugin->SetJDLName(Form("TaskAOD086PbPbdata%d.jdl",sub));
+         //plugin->SetSplitMaxInputFileNumber(500);
+         plugin->SetGridWorkingDir(Form("%s/AOD086-090Filter10/data%d/",fname.Data(),sub));
+       }  
+      FILE* listruns=fopen("RunListGrid-AOD086.txt","r");
+    }
+    Int_t irun;
+    while(!feof(listruns)){
+      fscanf(listruns,"%d\n",&irun);
+      plugin->AddRunNumber(irun);
+    }
+    // Declare alien output directory. Relative to working directory.
+    //plugin->SetGridOutputDir("/alice/cern.ch/user/l/lmilano/AODAnalysis/AOD086TrackBit10/mc1/output/000/Stage_1"); // In this case will be $HOME/work/output
+    plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
+    plugin->SetNrunsPerMaster(60); // 
   
 
-  // Declare the output file names separated by blancs.
-  // (can be like: file.root or file.root@ALICE::Niham::File)
-  //plugin->SetDefaultOutputs(0);
-  //plugin->SetOutputFiles("AnalysisResults.root.root");
-  plugin->SetMergeViaJDL(kTRUE);
-  plugin->SetOneStageMerging(kFALSE);
-  plugin->SetMaxMergeStages(2);
+    // Declare the output file names separated by blancs.
+    // (can be like: file.root or file.root@ALICE::Niham::File)
+    //plugin->SetDefaultOutputs(0);
+    //plugin->SetOutputFiles("AnalysisResults.root.root");
+    plugin->SetMergeViaJDL(kTRUE);
+    plugin->SetOneStageMerging(kFALSE);
+    plugin->SetMaxMergeStages(2);
   
-  plugin->SetTTL(100000);
-  // Optionally set input format (default xml-single)
-  plugin->SetInputFormat("xml-single");
-  // Optionally modify job price (default 1)
-  plugin->SetPrice(1);      
-  // Optionally modify split mode (default 'se')    
-  //plugin->SetSplitMaxInputFileNumber();
-  plugin->SetSplitMode("se");
-  return plugin;
-  delete runs;
-}
+    plugin->SetTTL(100000);
+    // Optionally set input format (default xml-single)
+    plugin->SetInputFormat("xml-single");
+    // Optionally modify job price (default 1)
+    plugin->SetPrice(1);      
+    // Optionally modify split mode (default 'se')    
+    //plugin->SetSplitMaxInputFileNumber();
+    plugin->SetSplitMode("se");
+    return plugin;
+    delete runs;
+  }