]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
update AliJHistManager to allow multiple instances and inclusive file reading over...
authorlmilano <lmilano@cern.ch>
Wed, 8 Oct 2014 13:15:48 +0000 (15:15 +0200)
committerlmilano <lmilano@cern.ch>
Wed, 8 Oct 2014 13:15:48 +0000 (15:15 +0200)
PWGCF/Correlations/JCORRAN/AliJHistManager.cxx
PWGCF/Correlations/JCORRAN/AliJHistManager.h
PWGCF/Correlations/JCORRAN/AliJHistos.cxx
PWGCF/Correlations/JCORRAN/AliJHistos.h
PWGCF/Correlations/macros/jcorran/AddTaskJDiHadronCorr.C

index 09b603ea8cadef8b3845671b84dd4b063bdf7b65..6721eb0775eb3068bac692bb4d9058cbd2f71999 100644 (file)
@@ -653,8 +653,8 @@ AliJHistManager::AliJHistManager(TString name):
     fHistConfigs(0)
 {
     // constructor
-    //CurrentManager(this);
     fDirectory = gDirectory;
+    this->cd();
 }
 
 //_____________________________________________________
@@ -690,7 +690,7 @@ AliJHistManager* AliJHistManager::GlobalManager(){
 }
 
 AliJHistManager* AliJHistManager::CurrentManager( AliJHistManager * hmg){
-    static AliJHistManager* currentManager = AliJHistManager::GlobalManager();
+    static AliJHistManager* currentManager = NULL;//;AliJHistManager::GlobalManager();
     if( hmg ) currentManager = hmg; 
     return currentManager;
 }
@@ -759,7 +759,7 @@ void AliJHistManager::Write(){
 
 void AliJHistManager::WriteConfig(){
     TDirectory *owd = gDirectory;
-    TDirectory * fHistConfigDir = gDirectory->mkdir("HistManager");
+    TDirectory * fHistConfigDir = fDirectory->mkdir("HistManager");
     fHistConfigDir->cd();
     TObjString * config = new TObjString(GetString().Data());
     config->Write("Config");
index 3d6a74518f750d1234a281ba4ce7bfb8432c17d4..a3dc3d19bd029768ddccf8a87cf609c2fa178030 100644 (file)
@@ -381,6 +381,7 @@ class AliJHistManager: public AliJNamed{
         void SetDirectory(TDirectory* d){ fDirectory = d; }
         static AliJHistManager* GlobalManager();
         static AliJHistManager* CurrentManager( AliJHistManager * hmg=NULL);
+        AliJHistManager * cd(){ return AliJHistManager::CurrentManager(this); }
         void SetLoadMode(bool b=true){ fIsLoadMode = b; }
         bool IsLoadMode(){ return fIsLoadMode; }
         TString GetString(){
@@ -402,7 +403,6 @@ class AliJHistManager: public AliJNamed{
         AliJTH1D& GetTH1D( TString name){ return dynamic_cast<AliJTH1D&>(*GetTH1(name)); }
         AliJTH2D& GetTH2D( TString name){ return dynamic_cast<AliJTH2D&>(*GetTH1(name)); }
         bool fIsLoadMode;
-        TDirectory * fDirectory;
 
         TString GetHistName(int i){ return fHistNames[i]; }
 
@@ -410,6 +410,8 @@ class AliJHistManager: public AliJNamed{
         int GetNAliJTH1(){ return fHistNames.size(); }
 
 
+        TDirectory * fDirectory; // TODO move to private?
+
     private:
         TString                     fConfigStr;
         std::vector<AliJBin*>       fBin;
index cf8f29cdb0999eb9b09dc189be214119a5faa430..893ca2e497aa07d3912da8f1dfcf083c68e0f2c2 100644 (file)
@@ -20,6 +20,8 @@
 #include  "AliJBaseTrack.h"
 #include  "AliJPhoton.h"
 #include  "AliJTrack.h"
+#include <TGrid.h>
+#include <TPRegexp.h>
 
 //______________________________________________________________________________
 AliJHistos::AliJHistos(AliJCard* cardP) :
@@ -111,6 +113,12 @@ AliJHistos::AliJHistos(AliJCard* cardP) :
   fhJTPta(),
   fhJTPtaBg(),
   fhJTPtaBgR(),
+  fHmgInclusive(NULL),
+  fhIetaTriggFromFile(),
+  fhIetaAssocFromFile(),
+  fhIphiTriggFromFile(),
+  fhIphiAssocFromFile(),
+  fhDphiAssocMixFromFile(),
   fhLPpt(),
   fhLPpairPt(),
   fhChargedPt(),
@@ -201,7 +209,7 @@ AliJHistos::AliJHistos(AliJCard* cardP) :
     ftriggFiducCut =  fCard->Get("TriggerFiducialEtaCut"); //FK// Fiduc cut 
     fmaxTriggEtaRange =  fmaxEtaRange - ftriggFiducCut; //FK// Trigger range
 
-    fHMG = AliJHistManager::GlobalManager();
+    fHMG = new AliJHistManager( "HistManager");
     //for (int hiklong = 0; hiklong < fCard->GetNoOfBins(kLongType); hiklong++)
     //kRGapType kEtaGapType
     fCentBin   .Set("Cent",   "C", "C %2.0f-%2.0f%%" ).SetBin( fCard->GetVector("CentBinBorders"));
@@ -356,6 +364,12 @@ AliJHistos::AliJHistos(const AliJHistos& obj) :
   fhJTPta(obj.fhJTPta),
   fhJTPtaBg(obj.fhJTPtaBg),
   fhJTPtaBgR(obj.fhJTPtaBgR),
+  fHmgInclusive(obj.fHmgInclusive),
+  fhIetaTriggFromFile(),
+  fhIetaAssocFromFile(),
+  fhIphiTriggFromFile(),
+  fhIphiAssocFromFile(),
+  fhDphiAssocMixFromFile(),
   fhLPpt(obj.fhLPpt),
   fhLPpairPt(obj.fhLPpairPt),
   fhChargedPt(obj.fhChargedPt),
@@ -452,10 +466,16 @@ AliJHistos& AliJHistos::operator=(const AliJHistos& obj){
     return *this;
 }
 
+AliJHistos::~AliJHistos() {
+       delete fHMG;
+       delete fHmgInclusive;
+}
+
 //______________________________________________________________________________
 void AliJHistos::CreateAzimuthCorrHistos()
 {
   // Comment needed here!
+  fHMG->cd();
   
     int    bins = 240; // 240 is divisible by 2,3,4,612*24=280    -1/3 and  0.5 and 5/3  are bin edges 
     //double fLowRange = -1.0/3, fHighRange= 5.0/3;
@@ -681,6 +701,7 @@ void AliJHistos::CreateAzimuthCorrHistos()
 
 void AliJHistos::CreateIAAMoons()
 {
+    fHMG->cd();
     //--- IAA signal ---
     fhDRNearPt
         << TH1D( "hDRNearPt", "",  fnUE, fUEBinsx) 
@@ -719,6 +740,7 @@ void AliJHistos::CreateXEHistos(){
     //==================================
     //  xe slopes
     //==================================
+    fHMG->cd();
     double xel=0.0, xeh=1.2;
     int nbxE = int((xeh-xel)/0.04);
 
@@ -739,6 +761,7 @@ void AliJHistos::CreateXEHistos(){
 
 void AliJHistos::CreatePairPtCosThetaStar(){
     // pairs
+    fHMG->cd();
     int    bins = 288; // 12*24    -1/3 and  0.5 and 5/3  are bin edges 
     double lowRange = -1./3, highRange= 5./3;
     //=================
@@ -781,6 +804,7 @@ void AliJHistos::CreatePairPtCosThetaStar(){
 //______________________________________________________________________________
 void AliJHistos::CreatePtCorrHistos(){
     // pt corr histos
+    fHMG->cd();
     int ptbins=30;
     double lpt=0,upt=8;
     fhPtNear
@@ -794,6 +818,7 @@ void AliJHistos::CreatePtCorrHistos(){
 //______________________________________________________________________________
 void AliJHistos::CreateRunByRunHistos(int runID, int runcounter) const {
   // Todo
+  fHMG->cd();
   JUNUSED(runID);
   JUNUSED(runcounter);
 } //TODO
@@ -802,6 +827,7 @@ void AliJHistos::CreateRunByRunHistos(int runID, int runcounter) const {
 //______________________________________________________________________________
 void AliJHistos::CreateEventTrackHistos(){
   // comment needed
+  fHMG->cd();
     int nBINS=150;
     double logBinsX[nBINS+1], limL=0.1, limH=100;
     double logBW = (log(limH)-log(limL))/nBINS;
@@ -882,6 +908,7 @@ void AliJHistos::CreateEventTrackHistos(){
 }
 
 void AliJHistos::CreateJetHistos(){
+    fHMG->cd();
     // jet histos
     int nBINS=200;
     double logBinsX[nBINS+1], limL=0.1, limH=200;
@@ -963,8 +990,9 @@ void AliJHistos::CreateJetHistos(){
 
 //______________________________________________________________________________
 void AliJHistos::CreateXtHistos() {
-
-    // TODO MakeDirectory("xT");
+    // TODO comment
+    //
+    fHMG->cd();
     // Esko
     TH1::SetDefaultSumw2(kTRUE);
     cout << "GetDefaultSumw2() = " << TH1::GetDefaultSumw2() << endl;
@@ -1007,76 +1035,85 @@ void AliJHistos::CreateXtHistos() {
 //______________________________________________________________________________
 //void AliJHistos::ReadInclusiveHistos(TFile *inFile){
 void AliJHistos::ReadInclusiveHistos(const char *inclusFileName){
-    // read inclusive histos
-    TFile *inclusFile = new TFile(inclusFileName, "READ");
-
-    //inFile->ls();
-    //cout<<((TH1D*) inclusFile->Get(Form("hIetaTrigg%02d%02d", 0, 0)))->GetEntries() <<endl; 
-    //abort();
-
-    for (int hic = 0;hic < fCard->GetNoOfBins(kCentrType);hic++) {
-        for (int hit = 0; hit < fCard->GetNoOfBins(kTriggType);hit++){
-            fhIetaTriggFromFile[hic][hit] = (TH1D*) inclusFile->Get(Form("hIetaTrigg%02d%02d", hic, hit));//FK//mix2 
-            //fhistoList->Add(fhIetaTriggFromFile[hic][hit]);
-            fhIphiTriggFromFile[hic][hit] = (TH1D*) inclusFile->Get(Form("hIphiTrigg%02d%02d", hic, hit));//FK//mix2 
-            //fhistoList->Add(fhIphiTriggFromFile[hic][hit]);
-            cout<<"c=" << hic <<" tr="<< hit <<" "<<fhIetaTriggFromFile[hic][hit]<<flush;
-            cout<<" entries="<<fhIetaTriggFromFile[hic][hit]->GetEntries() << endl; 
-        }
-    }
+       // read inclusive histos
+       fHMG->cd();
 
-    for (int hic = 0;hic < fCard->GetNoOfBins(kCentrType);hic++) {
-        for (int hia = 0; hia < fCard->GetNoOfBins(kAssocType); hia++){
-            fhIetaAssocFromFile[hic][hia] = (TH1D*) inclusFile->Get(Form("hIetaAssoc%02d%02d", hic, hia));//FK//mix2
-            //fhistoList->Add(fhIetaAssocFromFile[hic][hia]);
-            fhIphiAssocFromFile[hic][hia] = (TH1D*) inclusFile->Get(Form("hIphiAssoc%02d%02d", hic, hia));//FK//mix2
-            //fhistoList->Add(fhIphiAssocFromFile[hic][hia]);
-            cout<<"c=" << hic <<" as="<< hia <<" entries="<< fhIetaAssocFromFile[hic][hia]->GetEntries() <<endl; 
-        }
-    }
+       TPMERegexp sep("::");
+       int ncol = sep.Split( inclusFileName );
+    TString filename = sep[0];
 
-    int numCent = fCard->GetNoOfBins(kCentrType);
-    int numPtt  = fCard->GetNoOfBins(kTriggType);
-    int numPta  = fCard->GetNoOfBins(kAssocType);
-    int numEtaGaps = fCard->GetNoOfBins(kEtaGapType);
-    int numZvtx = fCard->GetNoOfBins(kZVertType);
-
-    //------------ R e a d   mixed  D a t a ------------    
-    const int zFirstBin = 0 ;
-    const int etaGapFirstBin = 0 ;
-    for (int hic = 0;hic < numCent; hic++) {
-        for (int hit = 0; hit < numPtt;hit++){
-            for (int hia = 0; hia < numPta; hia++){
-                fhDEtaNearMixFromFile[hic][hit][hia]=  (TH1D*) inclusFile->Get(Form("hDEtaNear/hDEtaNear%02d%02d%02d%02d%02d%02d", 1, hic, zFirstBin, etaGapFirstBin, hit, hia));
-                for (int iEtaGap=0; iEtaGap < numEtaGaps; iEtaGap++){//fdphi slices 
-                    for (int hiz = 0; hiz < numZvtx; hiz++) {
-                        if( iEtaGap==etaGapFirstBin && hiz==zFirstBin ) continue;
-                        TH1D *hid = (TH1D*) inclusFile->Get(Form("hDEtaNear/hDEtaNear%02d%02d%02d%02d%02d%02d", 1, hic, hiz, iEtaGap, hit, hia));
-                        fhDEtaNearMixFromFile[hic][hit][hia]->Add(hid);
-                    }
-                }
-                //normalize to traingle
-                double counts  = fhDEtaNearMixFromFile[hic][hit][hia]->Integral();
-                double bw      = fhDEtaNearMixFromFile[hic][hit][hia]->GetBinWidth(1);
-                int rebin = 4;
-                if(counts<5000) rebin=8;
-                if(counts<3000) rebin=10;
-                if(counts<1000) rebin=16;
-                fhDEtaNearMixFromFile[hic][hit][hia]->Rebin(rebin);
-                if(counts>0)  fhDEtaNearMixFromFile[hic][hit][hia]->Scale(2.*fmaxEtaRange/counts/bw/rebin);//triangle  f(0)=1, f(1.6)=0
-                //if(counts>0)  fhDEtaNearMixFromFile[hic][hit][hia]->Scale(2.*fmaxEtaRange/counts/bw);
-                //cout<<"c=" << hic <<" as="<< hia <<" entries="<< fhDEtaNearMixFromFile[hic][hit][hia]->GetEntries() <<endl; 
-
-            }   
-        }   
-    }   
-
-
-    //for (int hic = 0;hic < fCard->GetNoOfBins(kCentrType);hic++) {
-    //   for (int hit = 0; hit < fCard->GetNoOfBins(kTriggType);hit++){
-    //      for (int hia = 0; hia < fCard->GetNoOfBins(kAssocType); hia++){
-    //         hDphiAssocMixSpectraFile[hic][hit][hia]= (TH1D*) inclusFile->Get(Form("xhDphiAssoc%02dC%02dE00T%02dA%02d",1, hic, hit, hia));//FK//mix2
-    //      }
-    //   }
-    //}
+       if (TString(inclusFileName).BeginsWith("alien:"))  TGrid::Connect("alien:");
+       TFile *inclusFile = TFile::Open(filename);
+    TDirectory * dir =  (TDirectory*) inclusFile;
+    if( ncol > 1 ) dir = (TDirectory*)( inclusFile->Get(sep[1]));
+    if( !dir ) {
+               cout << " ReadInclusiveHistos wrong file name or dirname !!!!" << endl;
+       }
+
+     cout<<inclusFileName<<"\t"<<filename<<"\t";
+     if( ncol > 1 ) cout<<sep[1];
+        cout<<endl;
+        dir->Print();
+
+        dir->cd();
+
+        fHmgInclusive = new AliJHistManager("hst");
+        fHmgInclusive->LoadConfig();
+
+        fhIetaTriggFromFile = fHmgInclusive->GetTH1D("hIetaTrigg");
+        fhIetaTriggFromFile.Print();
+        fhIetaTriggFromFile[0][0]->Print();
+
+        fhIphiTriggFromFile = fHmgInclusive->GetTH1D("fhIphiTrigg"); // TODO
+        fhIphiTriggFromFile.Print();
+        fhIetaAssocFromFile = fHmgInclusive->GetTH1D("hIetaAssoc");
+        fhIetaAssocFromFile.Print();
+        fhIphiAssocFromFile = fHmgInclusive->GetTH1D("fhIphiAssoc");
+        fhIphiAssocFromFile.Print();
+
+        int numCent = fCard->GetNoOfBins(kCentrType);
+        int numPtt  = fCard->GetNoOfBins(kTriggType);
+        int numPta  = fCard->GetNoOfBins(kAssocType);
+        int numEtaGaps = fCard->GetNoOfBins(kEtaGapType);
+        int numZvtx = fCard->GetNoOfBins(kZVertType);
+
+        //------------ R e a d   mixed  D a t a ------------    
+        const int zFirstBin = 0 ;
+        const int etaGapFirstBin = 0 ;
+        AliJTH1D hDEtaNearTmp = fHmgInclusive->GetTH1D("hDEtaNear");
+        for (int hic = 0;hic < numCent; hic++) {
+                for (int hit = 0; hit < numPtt;hit++){
+                        for (int hia = 0; hia < numPta; hia++){
+                                fhDEtaNearMixFromFile[hic][hit][hia]= hDEtaNearTmp[hic][zFirstBin][etaGapFirstBin][hit][hia]; 
+                                for (int iEtaGap=0; iEtaGap < numEtaGaps; iEtaGap++){//fdphi slices 
+                                        for (int hiz = 0; hiz < numZvtx; hiz++) {
+                                                if( iEtaGap==etaGapFirstBin && hiz==zFirstBin ) continue;
+                                                TH1D *hid = hDEtaNearTmp[hic][hiz][iEtaGap][hit][hia];
+                                                        fhDEtaNearMixFromFile[hic][hit][hia]->Add(hid);
+                                        }
+                                }
+                                //normalize to traingle
+                                double counts  = fhDEtaNearMixFromFile[hic][hit][hia]->Integral();
+                                double bw      = fhDEtaNearMixFromFile[hic][hit][hia]->GetBinWidth(1);
+                                int rebin = 4;
+                                if(counts<5000) rebin=8;
+                                if(counts<3000) rebin=10;
+                                if(counts<1000) rebin=16;
+                                fhDEtaNearMixFromFile[hic][hit][hia]->Rebin(rebin);
+                                if(counts>0)  fhDEtaNearMixFromFile[hic][hit][hia]->Scale(2.*fmaxEtaRange/counts/bw/rebin);//triangle  f(0)=1, f(1.6)=0
+                                //if(counts>0)  fhDEtaNearMixFromFile[hic][hit][hia]->Scale(2.*fmaxEtaRange/counts/bw);
+                                //cout<<"c=" << hic <<" as="<< hia <<" entries="<< fhDEtaNearMixFromFile[hic][hit][hia]->GetEntries() <<endl; 
+
+                        }   
+                }   
+        }   
+
+
+        //for (int hic = 0;hic < fCard->GetNoOfBins(kCentrType);hic++) {
+        //   for (int hit = 0; hit < fCard->GetNoOfBins(kTriggType);hit++){
+        //      for (int hia = 0; hia < fCard->GetNoOfBins(kAssocType); hia++){
+        //         hDphiAssocMixSpectraFile[hic][hit][hia]= (TH1D*) inclusFile->Get(Form("xhDphiAssoc%02dC%02dE00T%02dA%02d",1, hic, hit, hia));//FK//mix2
+        //      }
+        //   }
+        //}
 }
index 54077485410a0f17b5e460b5fc8f58705b1a29f6..813f7114589105c02ddcffc8c3f1e95efaa57c5f 100644 (file)
@@ -45,7 +45,7 @@ class AliJHistos {
   
 public:
   AliJHistos(AliJCard* cardP); //constructor
-  virtual ~AliJHistos(){;}    //destructor
+  virtual ~AliJHistos();    //destructor
   AliJHistos(const AliJHistos& obj);
   AliJHistos& operator=(const AliJHistos& obj);
   
@@ -175,11 +175,13 @@ public:
   AliJTH1D     fhJTPtaBgR;  // comment me
   
   //FK//mix2    inclusve spectra
-  TH1D *fhIetaTriggFromFile  [kMaxNoCentrBin][kPtDim];//FK//mix2
-  TH1D *fhIetaAssocFromFile  [kMaxNoCentrBin][kPtDim];//FK//mix2
-  TH1D *fhIphiTriggFromFile  [kMaxNoCentrBin][kPtDim];//FK//mix2
-  TH1D *fhIphiAssocFromFile  [kMaxNoCentrBin][kPtDim];//FK//mix2
-  TH1D *fhDphiAssocMixFromFile  [kMaxNoCentrBin][kPtDim][kPtDim];//FK//mix2
+
+  AliJHistManager * fHmgInclusive;
+  AliJTH1D fhIetaTriggFromFile; //FK//mix2
+  AliJTH1D fhIetaAssocFromFile  ;//FK//mix2
+  AliJTH1D fhIphiTriggFromFile  ;//FK//mix2
+  AliJTH1D fhIphiAssocFromFile  ;//FK//mix2
+  AliJTH1D fhDphiAssocMixFromFile  ;//FK//mix2
   
   TH1D *fhDEtaNearMixFromFile[kMaxNoCentrBin][kPtDim][kPtDim]; // comment me
   
index 6685aa436d423fcd8383d1468e6bb5443add1076..d5a5f238c7e3a1d2ae567d89b035a0e1364d3f88 100755 (executable)
@@ -1,5 +1,5 @@
 //_____________________________________________________________________
-AliAnalysisTask *AddTaskJDiHadronCorr(TString cardName, TString jtrigg, TString jassoc, TString cardSetting, TString inclusFileName=""){
+AliAnalysisTask *AddTaskJDiHadronCorr(TString taskName, TString cardName, TString jtrigg, TString jassoc, TString cardSetting, TString inclusFileName=""){
        // Load Custom Configuration and parameters
        // override values with parameters
 
@@ -7,9 +7,10 @@ AliAnalysisTask *AddTaskJDiHadronCorr(TString cardName, TString jtrigg, TString
        AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
 
        //==== JCORRAN Efficiency TASK
-       AliJDiHadronCorrTask *jdihadtask = new AliJDiHadronCorrTask("JDiHadronCorrTask","JOD");
+       AliJDiHadronCorrTask *jdihadtask = new AliJDiHadronCorrTask(taskName.Data(),"JOD");
        jdihadtask->SetDebugLevel(5);
        jdihadtask->SetFilterTaskName("PWGCFJCORRANTask");
+       cout << jdihadtask->GetName() << endl;
 
 
        // === Create AliJCORRAN ====
@@ -37,7 +38,7 @@ AliAnalysisTask *AddTaskJDiHadronCorr(TString cardName, TString jtrigg, TString
 
        // Connect input/output
        mgr->ConnectInput(jdihadtask, 0, cinput);
-       AliAnalysisDataContainer *jHist = mgr->CreateContainer("JDiHadronCorr",  TDirectory::Class(), AliAnalysisManager::kOutputContainer, Form("%s:JDiHadronCorr",AliAnalysisManager::GetCommonFileName()));
+       AliAnalysisDataContainer *jHist = mgr->CreateContainer(Form("%scontainer",jdihadtask->GetName()),  TDirectory::Class(), AliAnalysisManager::kOutputContainer, Form("%s:%s",AliAnalysisManager::GetCommonFileName(), jdihadtask->GetName()));
        mgr->ConnectOutput(jdihadtask, 1, jHist );
 
        return jdihadtask;