+Bool_t AliAnalysisTaskJetBackgroundSubtract::RescaleJet4vector(AliAODJet *jet,TLorentzVector backgroundv){
+
+ if(backgroundv.Pt()<0.) return kFALSE;
+ jet->SetPxPyPzE(jet->Px()-backgroundv.Px(),jet->Py()-backgroundv.Py(),jet->Pz()-backgroundv.Pz(),jet->E()-backgroundv.E());
+
+ return kTRUE;
+}
+
+
+
+
+
+
+
+
+Double_t AliAnalysisTaskJetBackgroundSubtract::RecalcRho(TClonesArray* bkgClusters,Double_t meanarea){
+
+ //
+ // recalc rhoo
+ //
+
+ Double_t ptarea=0.;
+ Int_t count=0;
+ Double_t rho=0.;
+ const Double_t rLimit2=0.8*0.8; //2*jet radius.
+ TClonesArray* jarray=0;
+
+ for(int iJB = 0;iJB<fInJetArrayList->GetEntries();iJB++){
+ TObjString *ostr = (TObjString*)fInJetArrayList->At(iJB);
+ TString jetref=ostr->GetString().Data();
+ if(jetref.Contains("ANTIKT04")){
+ jarray = (TClonesArray*)fInJetArrayList->At(iJB);
+ }
+ }
+ if(!jarray)return rho;
+ if(jarray->GetEntries()>=2){
+ AliAODJet *first = (AliAODJet*)(jarray->At(0));
+ AliAODJet *second= (AliAODJet*)(jarray->At(1));
+ for(Int_t k=0;k<bkgClusters->GetEntriesFast();k++){
+ AliAODJet *clus = (AliAODJet*)(bkgClusters->At(k));
+ if(TMath::Abs(clus->Eta())>0.5) continue;
+ if((clus->EffectiveAreaCharged())<0.1*meanarea) continue;
+ Double_t distance1=(first->Eta()-clus->Eta())*(first->Eta()-clus->Eta())+
+ (first->Phi()-clus->Phi())*(first->Phi()-clus->Phi());
+ Double_t distance2= (second->Eta()-clus->Eta())*(second->Eta()-clus->Eta())+
+ (second->Phi()-clus->Phi())*(second->Phi()-clus->Phi());
+ if((distance1<rLimit2)||(distance2<rLimit2)) continue;
+ ptarea=ptarea+clus->Pt()/clus->EffectiveAreaCharged();
+ count=count+1;}
+ if(count!=0) rho=ptarea/count;
+ }
+ return rho;
+}
+
+Double_t AliAnalysisTaskJetBackgroundSubtract::RhoRC(TClonesArray* bkgClustersRC){
+
+ //
+ // calc rho from random cones
+ //
+
+ Double_t ptarea=0.;
+ Int_t count=0;
+ Double_t rho=0.;
+ const Double_t rLimit2=0.8*0.8; //2*jet radius.
+ TClonesArray* jarray=0;
+ for(int iJB = 0;iJB<fInJetArrayList->GetEntries();iJB++){
+ TObjString *ostr = (TObjString*)fInJetArrayList->At(iJB);
+ TString jetref=ostr->GetString().Data();
+ if(jetref.Contains("ANTIKT04")){
+ jarray = (TClonesArray*)fInJetArrayList->At(iJB);
+ }
+ }
+ if(!jarray)return rho;
+
+ if(jarray->GetEntries()>=2){
+ AliAODJet *first = (AliAODJet*)(jarray->At(0));
+ AliAODJet *second=(AliAODJet*)(jarray->At(1));
+ for(Int_t k=0;k<bkgClustersRC->GetEntriesFast();k++){
+ AliAODJet *clus = (AliAODJet*)(bkgClustersRC->At(k));
+ if(TMath::Abs(clus->Eta())>0.5) continue;
+ Double_t distance1=(first->Eta()-clus->Eta())*(first->Eta()-clus->Eta())+
+ (first->Phi()-clus->Phi())*(first->Phi()-clus->Phi());
+ Double_t distance2= (second->Eta()-clus->Eta())*(second->Eta()-clus->Eta())+
+ (second->Phi()-clus->Phi())*(second->Phi()-clus->Phi());
+ if((distance1<rLimit2)||(distance2<rLimit2)) continue;
+ ptarea=ptarea+clus->Pt()/clus->EffectiveAreaCharged();
+ count=count+1;}
+ if(count!=0) rho=ptarea/count; }
+ return rho;
+}
+
+
+
+
+
+
+
+
+