enabling different trigger classes for jet spectra and event count
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 5 Feb 2012 21:34:23 +0000 (21:34 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 5 Feb 2012 21:34:23 +0000 (21:34 +0000)
PWGJE/AliAnalysisTaskJetServices.cxx
PWGJE/AliAnalysisTaskJetServices.h
PWGJE/AliAnalysisTaskJetSpectrum2.cxx
PWGJE/AliAnalysisTaskJetSpectrum2.h

index 737e2474cb2f4ad272bb1088ae82c62c70c8f5ad..8d41a5c85c95ffa921da90909bf0cc927f53c229 100644 (file)
@@ -86,6 +86,7 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices():
   fFilterMask(0),
   fRPMethod(0),
   fCollisionType(kPbPb),
+  fNTrigger(0),
   fAvgTrials(1),
   fVtxXMean(0),
   fVtxYMean(0),
@@ -101,8 +102,10 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices():
   fRPAngle(0),
   fPsiVZEROA(0),
   fPsiVZEROC(0),
+  fTriggerBit(0x0),
   fRandomizer(0),
   fNonStdFile(""),
+  fTriggerName(0x0),
   fh1Xsec(0x0),
   fh1Trials(0x0),
   fh1PtHard(0x0),
@@ -111,7 +114,10 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices():
   fh1EventCutInfoESD(0),
   fh1CentralityESD(0),
   fh1Centrality(0),
+  fh1ReducedTrigger(0),
   fh1RP(0),
+  fh2CentralityTriggerESD(0),
+  fh2CentralityTrigger(0),
   fh2TriggerCount(0x0),
   fh2ESDTriggerCount(0x0),
   fh2TriggerVtx(0x0),
@@ -153,6 +159,7 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name):
   fFilterMask(0),
   fRPMethod(0),
   fCollisionType(kPbPb),
+  fNTrigger(0),
   fAvgTrials(1),
   fVtxXMean(0),
   fVtxYMean(0),
@@ -168,8 +175,10 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name):
   fRPAngle(0),
   fPsiVZEROA(0),
   fPsiVZEROC(0),
+  fTriggerBit(0x0),
   fRandomizer(0),
   fNonStdFile(""),
+  fTriggerName(0x0),
   fh1Xsec(0x0),
   fh1Trials(0x0),
   fh1PtHard(0x0),
@@ -178,7 +187,10 @@ AliAnalysisTaskJetServices::AliAnalysisTaskJetServices(const char* name):
   fh1EventCutInfoESD(0),
   fh1CentralityESD(0),
   fh1Centrality(0),
+  fh1ReducedTrigger(0),
   fh1RP(0),
+  fh2CentralityTriggerESD(0),
+  fh2CentralityTrigger(0),
   fh2TriggerCount(0x0),
   fh2ESDTriggerCount(0x0),
   fh2TriggerVtx(0x0),
@@ -288,6 +300,21 @@ void AliAnalysisTaskJetServices::UserCreateOutputObjects()
   fh1RP = new TH1F("fh1RP","RP;#Psi",440, -1.*TMath::Pi(), 2.*TMath::Pi());
   fHistList->Add(fh1RP);
 
+  fh1ReducedTrigger = new TH1F("fh1ReducedTrigger","red trigger;red trigger",1<<fNTrigger,-0.5,(1<<fNTrigger)-0.5);
+  fHistList->Add(fh1ReducedTrigger);
+
+  fh2CentralityTriggerESD = new TH2F("fh2CentralityTriggerESD",";cent;trigger no",103,-1,102,fNTrigger,-0.5,fNTrigger-0.5);
+  fHistList->Add(fh2CentralityTriggerESD);
+  
+  fh2CentralityTrigger = new TH2F("fh2CentralityTrigger",";cent;trigger no",103,-1,102,fNTrigger,-0.5,fNTrigger-0.5);
+  fHistList->Add(fh2CentralityTrigger);
+
+  for(int i = 0;i<fNTrigger;++i){
+    fh2CentralityTriggerESD->GetYaxis()->SetBinLabel(i+2,fTriggerName[i].Data());
+    fh2CentralityTrigger->GetYaxis()->SetBinLabel(i+2,fTriggerName[i].Data());
+  }
+
+
   fh2TriggerCount = new TH2F("fh2TriggerCount",";Trigger No.;constrained;Count",6,-0.5,5.5,kConstraints,-0.5,kConstraints-0.5); 
   fHistList->Add(fh2TriggerCount);
 
@@ -456,25 +483,6 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
   Bool_t aodVtxValid = false;
   Bool_t aodVtxIn = false;
 
-  if(esd){
-    // trigger analyisis
-    if(!fTriggerAnalysis){
-      fTriggerAnalysis = new AliTriggerAnalysis;
-      fTriggerAnalysis->SetAnalyzeMC(fMC);
-      fTriggerAnalysis->SetSPDGFOThreshhold(1);
-    }
-    //    fTriggerAnalysis->FillTriggerClasses(esd);
-    Bool_t v0A       = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0A);
-    Bool_t v0C       = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0C);
-    Bool_t v0ABG = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0ABG);
-    Bool_t v0CBG = fTriggerAnalysis->IsOfflineTriggerFired(esd, AliTriggerAnalysis::kV0CBG);
-    Bool_t spdFO      = fTriggerAnalysis->SPDFiredChips(esd, 0);;
-    if(v0A)fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kV0A;
-    if(v0C)fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kV0C;
-    if(!(v0ABG||v0CBG))fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kNoV0BG;
-    if(spdFO)fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kSPDFO;
-  }
   // Apply additional constraints
   Bool_t esdEventSelected = IsEventSelected(esd);
   Bool_t esdEventPileUp = IsEventPileUp(esd);
@@ -494,6 +502,8 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
   if(physicsSelection) fSelectionInfoESD |=  AliAnalysisHelperJetTasks::kPhysicsSelection;
 
 
+
+
   // here we have all selection information, fill histogram
   for(unsigned int i = 1;i<(UInt_t)fh1SelectionInfoESD->GetNbinsX();i++){
     if((i&fSelectionInfoESD)==i)fh1SelectionInfoESD->Fill(i);
@@ -582,6 +592,14 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
        tmpCent = esd->GetCentrality()->GetCentralityPercentile("V0M");
        if(tmpCent<0)tmpCent = 101;
        fh1CentralityESD->Fill(tmpCent);
+       UInt_t ir = 0;
+       for(int it = 0;it<fNTrigger;++it){
+         if(fInputHandler->IsEventSelected()&fTriggerBit[it]){
+           fh2CentralityTriggerESD->Fill(tmpCent,it);
+           ir |= (1<<it);
+         }
+       }
+       fh1ReducedTrigger->Fill(ir);
       }
     }
   }
@@ -628,6 +646,9 @@ void AliAnalysisTaskJetServices::UserExec(Option_t */*option*/)
       fh2TriggerCount->Fill(iCl,kSelected);
       fh2TriggerCount->Fill(0.,kSelected);
       fh1Centrality->Fill(cent);
+      for(int it = 0;it<fNTrigger;++it){
+       if(fInputHandler->IsEventSelected()&fTriggerBit[it])fh2CentralityTrigger->Fill(cent,it);
+      }
       AliAnalysisHelperJetTasks::Selected(kTRUE,kTRUE);// select this event
       if(aodH&&cand&&fFilterAODCollisions&&!esd){
        if(fCentrality<=80&&aodVtxIn){
@@ -766,6 +787,8 @@ AliAnalysisTaskJetServices::~AliAnalysisTaskJetServices(){
   delete fp1CalibRPYA;
   delete fp1CalibRPXC;
   delete fp1CalibRPYC;
+  delete [] fTriggerBit;
+  delete [] fTriggerName;
 
 }
 
@@ -1185,3 +1208,30 @@ Int_t  AliAnalysisTaskJetServices::GetListOfTracks(TList *list){
 
 }
 
+void AliAnalysisTaskJetServices::SetNTrigger(Int_t n){
+  if(n>0){
+      fNTrigger = n;
+      delete [] fTriggerName;
+      fTriggerName = new TString [fNTrigger];
+      delete [] fTriggerBit;fTriggerBit = 0;
+      fTriggerBit = new UInt_t [fNTrigger];
+  }
+  else{
+    fNTrigger = 0;
+  }
+}
+
+void AliAnalysisTaskJetServices::SetTrigger(Int_t i,UInt_t it,const char* c){
+  if(i<fNTrigger){
+    Printf("%d",it);
+    Printf("%p",c);
+    Printf("%s",c);    
+    Printf("%p",&fTriggerName[i]);
+
+    fTriggerBit[i] = it;
+    fTriggerName[i] =  c; // placement new
+    //    new(&fTriggerName[i]) TString(c); // placement new
+    Printf("%s",fTriggerName[i].Data());
+    
+  } 
+}
index 602352ff68d91c107f144934a12cfe693cfa536a..376fde80b8bbb9e1115eaa5de8a9c9eb8a6526c8 100644 (file)
@@ -26,6 +26,7 @@ class AliTriggerAnalysis;
 
 class TList;
 class TClonesArray;
+class TObjArray;
 class TChain;
 class TH1F;
 class TH2F;
@@ -85,6 +86,9 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     virtual void SetV0Centroids(TProfile *xa,TProfile *ya,
                               TProfile *xc,TProfile *yc);
 
+    virtual void SetNTrigger(Int_t n);
+    virtual void SetTrigger(Int_t i,UInt_t it,const char* c = "");
+
 
     Bool_t   CalculateReactionPlaneAngleVZERO(AliAODEvent *aod);
     Int_t   GetListOfTracks(TList *list);
@@ -121,7 +125,8 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     UInt_t        fEventCutInfoESD;   // event selection info of what is cutted after physics selection
     UInt_t        fFilterMask;         // filter bit for slecected tracks
     Int_t         fRPMethod;           // method for subevent calculation
-    Int_t         fCollisionType;           // type of collisions
+    Int_t         fCollisionType;      // type of collisions
+    Int_t         fNTrigger;           // Number of different triggers
     Float_t       fAvgTrials;          // Average number of trials
     Float_t       fVtxXMean;           // mean x for cuts
     Float_t       fVtxYMean;           // mean y for cuts
@@ -133,15 +138,17 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     Float_t       fMaxCosmicAngle;     // Max deviation from pi (angle between two tracks) in case of cosmic candidate
     Float_t       fRunRange[2];        // only important for real data for 
     Float_t       fCentrality;         // ! centrality
-    Float_t       fTrackRecEtaWindow;     // eta window for rec tracks
-    Float_t       fMinTrackPt;            // limits the track p_T 
-    Float_t       fRPAngle;               // ! RP angle of the reaction plane
-    Float_t       fPsiVZEROA;              // ! RP angle from vzeroa
-    Float_t       fPsiVZEROC;              // ! RP angle from vzeroc
+    Float_t       fTrackRecEtaWindow;  // eta window for rec tracks
+    Float_t       fMinTrackPt;         // limits the track p_T 
+    Float_t       fRPAngle;            // ! RP angle of the reaction plane
+    Float_t       fPsiVZEROA;          // ! RP angle from vzeroa
+    Float_t       fPsiVZEROC;          // ! RP angle from vzeroc
+    UInt_t        *fTriggerBit  ;      //[fNTrigger]
 
     TRandom3      *fRandomizer;        // ! randomizer
 
     TString       fNonStdFile;         // outputName for replication
+    TString       *fTriggerName;  //[fNTrigger] array of trigger names
     TProfile*     fh1Xsec;             //! pythia cross section and trials
     TH1F*         fh1Trials;           //! trials are added
     TH1F*         fh1PtHard;           //! Pt har of the event...       
@@ -150,7 +157,10 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     TH1F*         fh1EventCutInfoESD;  //! Masks that satisfy fSelectionInfo
     TH1F*         fh1CentralityESD;    //! centrality 
     TH1F*         fh1Centrality;       //! centrality 
+    TH1F*         fh1ReducedTrigger;   //! reduced trigger count 
     TH1F*         fh1RP;               //! RP distribution
+    TH2F*         fh2CentralityTriggerESD;    //! centrality 
+    TH2F*         fh2CentralityTrigger;       //! centrality 
     TH2F*         fh2TriggerCount;     //! number of fire triggers in each case
     TH2F*         fh2ESDTriggerCount;  //! number of fire triggers in each case
     TH2F*         fh2TriggerVtx;       //! vtx. position vs. trigger decision
@@ -182,7 +192,7 @@ class AliAnalysisTaskJetServices : public AliAnalysisTaskSE
     static AliAODHeader*    fgAODHeader;        //! Header for replication
     static AliAODVZERO*    fgAODVZERO;        //! vzero for replication
     static TClonesArray*  fgAODVertices;        //! primary vertex for replication
-    ClassDef(AliAnalysisTaskJetServices,14)
+    ClassDef(AliAnalysisTaskJetServices,15)
 };
  
 #endif
index 46b93c92905e46fddb53abe5a5982738aaa08a12..5e743383c35c07c851c4bea3f222e0db5e98df97 100644 (file)
@@ -96,6 +96,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2():
   fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
   fFilterMask(0),
   fEventSelectionMask(0),
+  fNTrigger(0),
+  fTriggerBit(0x0),
   fAnalysisType(0),
   fTrackTypeRec(kTrackUndef),
   fTrackTypeGen(kTrackUndef),
@@ -112,6 +114,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2():
   fRPAngle(0),
   fMultRec(0),
   fMultGen(0),
+  fTriggerName(0x0),
   fh1Xsec(0x0),
   fh1Trials(0x0),
   fh1PtHard(0x0),
@@ -188,6 +191,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name):
   fJetTriggerExcludeMask(AliAODJet::kHighTrackPtTriggered),
   fFilterMask(0),
   fEventSelectionMask(0),
+  fNTrigger(0),
+  fTriggerBit(0x0),
   fAnalysisType(0),
   fTrackTypeRec(kTrackUndef),
   fTrackTypeGen(kTrackUndef),
@@ -204,6 +209,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name):
   fRPAngle(0),
   fMultRec(0),
   fMultGen(0),
+  fTriggerName(0x0),
   fh1Xsec(0x0),
   fh1Trials(0x0),
   fh1PtHard(0x0),
@@ -329,10 +335,10 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects()
 
   
   // event npsparse cent, mult
-  const Int_t nBinsSparse0 = 2;
-  const Int_t nBins0[nBinsSparse0] = {     100, 500};
-  const Double_t xmin0[nBinsSparse0]  = {    0,   0};
-  const Double_t xmax0[nBinsSparse0]  = {  100,5000};
+  const Int_t nBinsSparse0 = 3;
+  const Int_t nBins0[nBinsSparse0] = {     100, 500,fNTrigger};
+  const Double_t xmin0[nBinsSparse0]  = {    0,   0, -0.5};
+  const Double_t xmax0[nBinsSparse0]  = {  100,5000,fNTrigger-0.5};
       
 
   fhnEvent = new THnSparseF("fhnEvent",";cent;mult",nBinsSparse0,
@@ -473,17 +479,17 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects()
     fp2CentRPPhiTrackPt[ij] = new TProfile2D(Form("fp2CentRPPhiTrackPt%s",cAdd.Data()),"RP phi vs cent;# cent;#Delta#phi_{RP}; <p_{T}>",10,0,100,181,-1./180.*TMath::Pi(),TMath::Pi(),"S");
     fHistList->Add(fp2CentRPPhiTrackPt[ij]);    
 
-    // Bins:  Jet number: pTJet, cent, mult, RP, Area.   total bins = 4.5M
-    const Int_t nBinsSparse1 = 6;
-    Int_t nBins1[nBinsSparse1] = {     kMaxJets+1,120, 10,  25,    fNRPBins, 10};
+    // Bins:  Jet number: pTJet, cent, mult, RP, Area, trigger total bins = 4.5M
+    const Int_t nBinsSparse1 = 7;
+    Int_t nBins1[nBinsSparse1] = {     kMaxJets+1,120, 10,  25,    fNRPBins, 10,fNTrigger};
     if(cJetBranch.Contains("RandomCone")){
       nBins1[1] = 600;
       nBins1[5] = 1;
     }
-    const Double_t xmin1[nBinsSparse1]  = {        -0.5,-50,  0,   0,        -0.5, 0.};
-    const Double_t xmax1[nBinsSparse1]  = {kMaxJets+0.5,250,100,5000,fNRPBins-0.5,1.0};
+    const Double_t xmin1[nBinsSparse1]  = {        -0.5,-50,  0,   0,        -0.5, 0.,-0.5};
+    const Double_t xmax1[nBinsSparse1]  = {kMaxJets+0.5,250,100,5000,fNRPBins-0.5,1.0,fNTrigger-0.5};
     
-    fhnJetPt[ij] = new THnSparseF(Form("fhnJetPt%s",cAdd.Data()),";jet number;p_{T,jet};cent;# tracks;RP;area",nBinsSparse1,nBins1,xmin1,xmax1);
+    fhnJetPt[ij] = new THnSparseF(Form("fhnJetPt%s",cAdd.Data()),";jet number;p_{T,jet};cent;# tracks;RP;area;trigger",nBinsSparse1,nBins1,xmin1,xmax1);
     fHistList->Add(fhnJetPt[ij]);
     
     // Bins:  Jet number: pTJet, cent, eta, phi, Area.   total bins = 9.72 M
@@ -838,8 +844,12 @@ void AliAnalysisTaskJetSpectrum2::UserExec(Option_t */*option*/){
   Double_t var0[2] = {0,};
   var0[0] = fCentrality;
   var0[1] = fMultRec;
-  fhnEvent->Fill(var0);
-
+  for(int it=0;it<fNTrigger;it++){
+    if(fInputHandler->IsEventSelected()&fTriggerBit[it]){
+      var0[2] = it;
+      fhnEvent->Fill(var0);
+    }
+  }
   // the loops for rec and gen should be indentical... pass it to a separate
   // function ...
   // Jet Loop
@@ -957,12 +967,23 @@ void AliAnalysisTaskJetSpectrum2::FillJetHistos(TList &jetsList,TList &particles
        if(leadTrack)fh2LTrackPtJetPt[iType][ij]->Fill(leadTrack->Pt(),ptJet);
        var1[0] = ij;
        var2[0] = ij;
-       fhnJetPt[iType]->Fill(var1);
+       for(int it = 0;it <fNTrigger;it++){
+         if(fInputHandler->IsEventSelected()&fTriggerBit[it]){
+           var1[6] = it;
+           fhnJetPt[iType]->Fill(var1);
+         }
+       }
        fhnJetPtQA[iType]->Fill(var2);
       }
       var1[0] = kMaxJets;// fill for all jets
       var2[0] = kMaxJets;// fill for all jets
-      fhnJetPt[iType]->Fill(var1);
+      for(int it = 0;it <fNTrigger;it++){
+       if(fInputHandler->IsEventSelected()&fTriggerBit[it]){
+         var1[6] = it;
+         fhnJetPt[iType]->Fill(var1);
+       }
+      }
+
       fhnJetPtQA[iType]->Fill(var2);
       if(leadTrack)fh2LTrackPtJetPt[iType][kMaxJets]->Fill(leadTrack->Pt(),ptJet);
 
@@ -1511,3 +1532,28 @@ Int_t AliAnalysisTaskJetSpectrum2::GetPhiBin(Double_t phi)
     return phibin;
 }
 
+void AliAnalysisTaskJetSpectrum2::SetNTrigger(Int_t n){
+  if(n>0){
+      fNTrigger = n;
+      delete [] fTriggerName;
+      fTriggerName = new TString [fNTrigger];
+      delete [] fTriggerBit;fTriggerBit = 0;
+      fTriggerBit = new UInt_t [fNTrigger];
+  }
+  else{
+    fNTrigger = 0;
+  }
+}
+
+void AliAnalysisTaskJetSpectrum2::SetTrigger(Int_t i,UInt_t it,const char* c){
+  if(i<fNTrigger){
+    fTriggerBit[i] = it;
+    fTriggerName[i] =  c;     
+  } 
+}
+
+AliAnalysisTaskJetSpectrum2::~AliAnalysisTaskJetSpectrum2(){
+  // 
+  delete [] fTriggerBit;
+  delete [] fTriggerName;
+}
index 793ab78bcc587699a60d1bebe314bc86658d0720..c1d5d710f30c01233a9625ceed7c53bfa2122b79 100644 (file)
@@ -41,7 +41,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
  public:
     AliAnalysisTaskJetSpectrum2();
     AliAnalysisTaskJetSpectrum2(const char* name);
-    virtual ~AliAnalysisTaskJetSpectrum2() {;}
+    virtual ~AliAnalysisTaskJetSpectrum2();
     // Implementation of interface methods
     virtual void UserCreateOutputObjects();
     virtual void Init();
@@ -81,6 +81,9 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
 
     virtual void SetNonStdFile(char* c){fNonStdFile = c;} 
 
+    virtual void SetNTrigger(Int_t n);
+    virtual void SetTrigger(Int_t i,UInt_t it,const char* c = "");
+
 
     // Helper
     //
@@ -154,9 +157,11 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     Bool_t        fDoMatching;            // switch on the matching between rec and gen
     Short_t       fNMatchJets;            // number of leading jets considered from the list
     Short_t       fNRPBins;               // number of bins with respect to RP
-    UChar_t        fJetTriggerExcludeMask; // mask for jet triggers to exclude
+    UChar_t       fJetTriggerExcludeMask; // mask for jet triggers to exclude
     UInt_t        fFilterMask;            // filter bit for slecected tracks
     UInt_t        fEventSelectionMask;    // Selection information used to filter events
+    Int_t         fNTrigger;              // number of triggers for selection
+    UInt_t        *fTriggerBit;            //[fNTrigger] trigger bits 
     Int_t         fAnalysisType;          // Analysis type 
     Int_t         fTrackTypeRec;          // type of tracks used for FF 
     Int_t         fTrackTypeGen;          // type of tracks used for FF 
@@ -174,7 +179,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE
     Float_t       fRPAngle;               // ! RP angle of the reaction plane
     Int_t         fMultRec;               // ! reconstructed track multiplicity
     Int_t         fMultGen;               // ! generated track multiplicity
-    
+    TString       *fTriggerName;  //[fNTrigger] array of trigger names
 
     TProfile*     fh1Xsec;   //! pythia cross section and trials
     TH1F*         fh1Trials; //! trials are added